Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 18:07   #1
fly0f
 
Регистрация: 04.04.2012
Сообщений: 5
По умолчанию Вопрос про вывод переменной в префиксной и постфиксной форме. C++

Есть вот такая программка, вот только ее результаты не совсем мне понятны. Не знаю почему так происходит. Ведь если пишем n++, то тогда вычисляется текущее значение переменной, а после этого уже изменяется. А в результате все по другому.
Код:
        int n;
	
	n = 0;
	cout << "Постфиксная форма:" << endl;
	cout << n++ << ' ' << n++ << endl;
	cout << "Сейчас n = " << n << endl << endl;					
	
	n = 0;
	cout << "Префиксная форма:" << endl;
	cout << ++n << ' ' << ++n << endl;
	cout << "Сейчас n = " << n << endl << endl;
И вот что она выводит
Код:
Постфиксная форма:
1 0
Сейчас n = 2

Префиксная форма:
2 2
Сейчас n = 2

Последний раз редактировалось fly0f; 04.04.2012 в 18:13.
fly0f вне форума Ответить с цитированием
Старый 04.04.2012, 20:37   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
    int n;
    n=0;

	cout << "Постфиксная форма:" << endl;
	//cout << n++ << ' ' << n++ << endl;
	cout << n++ << endl;
	cout << n++ << endl;
	cout << "Сейчас n = " << n << endl << endl;

	n = 0;
	cout << "Префиксная форма:" << endl;
	//cout << ++n << ' ' << ++n << endl;
	cout << ++n << endl;
	cout << ++n << endl;
	cout << "Сейчас n = " << n << endl << endl;
Выдает:
Цитата:
Постфиксная форма:
0
1
Сейчас n = 2

Префиксная форма:
1
2
Сейчас n = 2
На другом форуме обсуждали такую же ситуацию.
Возможно это undefined behaviour.
Еще, возможно, что cout выполняет все действия справо-налево (высчитывает выражения), и тогда первая строка ответа неудивительна, но 2 строка ответа все равно смущает.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про переменную типа тип переменной о__О pinkiller Общие вопросы C/C++ 1 03.01.2012 14:06
Turbo Pascal - вычислить значение выражения в постфиксной форме doktor_zlo Помощь студентам 4 11.11.2011 14:28
программу с примерами постфиксной и префиксной формами инкремента и декремента Angel of death Помощь студентам 3 17.11.2009 18:13
дерево выражения, записанного в постфиксной форме Delphi Римма1990 Помощь студентам 0 20.04.2009 20:49
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33