Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > предлагаю поиграться


Автор: Teacher 10.3.2004, 21:13
Попробуйте свои силы без компилятора:

Чему будет равно z после выполнения следующего фрагмента кода?

int z = 1, y;
for( y=-1; y++ < 2; y-- )
z += y++;
cout << z;

Варианты ответов:
a) z = 0 d) z = 3
b) z = 1 e) z = 4
c) z = 2

Могу разместить на форуме целый тест. Если есть желание, чтобы он появился - напишите здесь.

Автор: mer 10.3.2004, 21:15
Интересно, а что for( y=-1; y++ < 2; y-- ) в этом коде перед первой итерацией выполняется, а что после итерации?

Автор: Step 11.3.2004, 10:53
Модератор:размещать не надо, разрешаю в этом топике дать ссылку, но не больше

Автор: Fantasist 11.3.2004, 20:44
Цитата
Интересно, а что for( y=-1; y++ < 2; y-- ) в этом коде перед первой итерацией выполняется, а что после итерации?


Ничего. Тело цикла не выполниться ни разу, хотя y увеличется на 1 и станет равно 0. z останется равным 1.

Автор: Vyacheslav 12.3.2004, 14:17
Первый цикл
Присвоение y = -1
Выполнение проверки y++< 2 (-1<2 ; y = -1 + 1 = 0; )
Выполнение z += y++ (z = 1+ 0 =1 ; y = 0 + 1 = 1 )
Выполнение y-- (y = 1 - 1 =0)
Второй цикл
Выполнение проверки y++< 2 ( 0<2 ; y = 0 + 1 = 1; )
Выполнение z += y++ (z = 1+ 1 =2 ; y = 1 + 1 = 2 )
Выполнение y-- (y = 2 - 1 =1)
Третий цикл
Выполнение проверки y++< 2 ( 1<2 ; y = 1 + 1 = 2; )
Выполнение z += y++ (z = 2+ 2 =4 ; y = 2 + 1 = 3 )
Выполнение y-- (y = 3 - 1 =2)
Четвертый цикл
Выполнение проверки y++< 2 ( 2<2 ; y = 2 + 1 = 3; )
Выход

z=4, y = 3

Автор: Fantasist 12.3.2004, 20:03
Забавно, почему это я выражение -1<2 посчитал ложным.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)