@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 ?
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 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 ?

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

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

Войти через TM ID
Похожие вопросы