@chelovek7

Почему в ответе получается 0?

int j = 0;

for (int i = 0; i < 10; i++) 
    j = j++;

Console.WriteLine(j);

Почему в ответе получается 0?
Разжевывается вот так: (код, по сути, аналогичен z = j; j = j + 1; j = z ).
В разжеванном варианте понятно все, кроме последней части, зачем j = z ?
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 2
EreminD
@EreminD
Кое-что умею
потому что j++ - это сначала взять значение (0), использовать его (записать в j), а потом только увеличить

если сделаете
for (int i = 0; i < 10; i++) 
    j = ++j;
    // или j = j+1;
    // или j++
, получите 10
Ответ написан
zagayevskiy
@zagayevskiy
Android developer at Yandex
В разжеванном варианте понятно все, кроме последней части, зачем j = z ?

Затем, что так определён оператор постфиксного инкремента. Скопировать значение переменной. Увеличить переменную. Вернуть скопированное значение. Этим копированием постфиксный инкремент(ш++) отличается от префиксного(++ш).
Присвоение выполняется в самом конце, поскольку имеет меньший приоритет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы