23:59
Винтажные грабли
Детскую ошибку совершил:
a=a++;
Сначала было просто а++, потом я сделал a=(a+1)%4; и, наконец, решил вернуть как было, но промахнулся.
Долго думал, почему значение переменной в цилке не меняется. Даже когда увидел ошибку, понял не сразу.
У ++ приоритет меньше, чем у присваивания. Но это постфиксная форма. поэтому значением a++ в выражении будет старое значение a (в данном случае, ноль).
Выражение будет вычисляться следующим образом:
1. В качестве значения a++ берётся старое значение a (ноль).
2. a увеличивается на единицу (1).
3. a получает значение a++, которое равно нулю согласно пункту 1.
Таким образом, значение a дёрнулось, но после окончания вычислений вернулось обратно.
a=a++;
Сначала было просто а++, потом я сделал a=(a+1)%4; и, наконец, решил вернуть как было, но промахнулся.
Долго думал, почему значение переменной в цилке не меняется. Даже когда увидел ошибку, понял не сразу.
У ++ приоритет меньше, чем у присваивания. Но это постфиксная форма. поэтому значением a++ в выражении будет старое значение a (в данном случае, ноль).
Выражение будет вычисляться следующим образом:
1. В качестве значения a++ берётся старое значение a (ноль).
2. a увеличивается на единицу (1).
3. a получает значение a++, которое равно нулю согласно пункту 1.
Таким образом, значение a дёрнулось, но после окончания вычислений вернулось обратно.
06.03.2020 в 12:01
06.03.2020 в 12:48
06.03.2020 в 14:34
LizardOfOzz, а что с ним не так? Отношусь хорошо, никогда не использую.
06.03.2020 в 15:54
// но это потому что в петоне/рубях/js нет ++ ^_^', а не хочется переключать в голове синтаксисические конструкции.
++ я юзал разве что в for, потому что слишком идиоматично и если я напишу там +=1, то могут возникнуть лишние вопросы.
06.03.2020 в 17:28