+ 1

Объясните пример

Объясните пример! Почему ответ равен одному? int x = 2; int y = ++x + x++; int z = --y - x--; Console.Write(z); out: 1 Explain example! Why is the answer equal to one?

22nd Aug 2018, 2:57 PM
Said
Said - avatar
1 Answer
+ 1
++x - предварительная инкрементация (сначала увеличиваем значение, потом используем его в выражении), x++ - постинкрементация (сначала используем, потом увеличиваем). int x = 2; // здесь я думаю объяснять нечего int y = ++x + x++; // преинкрементация, т.е первый элемент (++x) сначала увеличит свое значение, только потом будет использован в выражении, итого получается int y = 3 + x++ // второй элемент (x++) сначала используется в выражении (помним что на этом этапе наша переменная x уже равна 3, а не 2), а только потом его значение увеличевается, итого получаем int y = 3 + 3 = 6, а также переменную x увеличенную уже до 4 int z = --y - x--; // получаем int z = 5 - 4 = 1, а также значение x измененное до 3 Итого после выполнения всех инструкций получаем z = 1, y = 5, x = 3.
22nd Aug 2018, 3:22 PM
Steppenwolf
Steppenwolf - avatar