скорее всего оптимизация памяти - инкременты высчитываются (т.к. имеют наибольший приоритет), но вместо промежуточных значений используется значение переменной (т.к. оно по их мнению совпадает с ++i)
при вычислении выражения первыми вычисляются инкременты, т.к. они префиксные, вместо них тупо подставляется значение переменной (чтобы не тратить память на хранение промежуточных результатов)
Reply
Reply
i = (5+1) + (5+1+1) = 6+7 = 13
Reply
++i + ++i => i + i => 7 + 7 => 14
Reply
(i = 5); ++i + ++i
(i = 6); i + ++i
(i = 7); i + i
(i = 14);
Reply
Спасибо )
Reply
i=5; printf("%d, %d\n", i++, i++);
большинство компилеров напечатает "6, 5", а не ожидаемое "5, 6"
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment