Выход из нескольких пост и предварительной приращения в одном утверждении [дубликат

StackOverflow https://stackoverflow.com/questions/3812850

Вопрос

Я новичок в языке C, так что PLZ Sum1 поможет мне. Код переменного тока письма

int i=3;
printf("%d",++i + ++i);

Уполномоченный GVS O / P = 9. Как?
Спасибо заранее

Это было полезно?

Решение

Результаты не определены. Вы изменяете переменную более одного раза в выражении (или точка последовательности быть более точным).

Изменение переменной более одного раза между точками последовательности не определена, поэтому не делайте этого.

Это может быть ваш компилятор, для этого конкретного случая решает оценить++i + ++i так как

  • увеличить последний ++i , уступая 4, оставив мне 4
  • увеличить первый ++i, уступая 5, оставив мне 5 (так как предыдущий шаг покинул I как 4, увеличивая его до 5)
  • Сумма двух значений, 4 + 5.

Другой компилятор, или если вы измените уровень оптимизации, или если вы слегка измените код, можете изготовить разные вывода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top