Это неопределенное поведение в C? [Дубликат]
На этот вопрос уже есть ответ:
Неопределенное поведение и точки последовательности 5 ответов Почему эти конструкции используют неопределенное поведение до и после приращения? 14 ответовЯ запускаю свой код C на gcc, чтобы понять оператор до / после приращения. Однако результаты, которые я вижу, не те, которые я ожидал. Как и в строке 6, так как я 5, это должно было быть
8 7 6 5 5
Но это8 7 6 5 8
После перехода к последней строке отображается14 14 14 14
. Может кто-нибудь, пожалуйста, объясните это поведение. Я ожид14 14 13 12
Зависит ли этот компилятор? Поведение функции printf в точках последовательности не определено?
#include <stdio.h>
int main()
{
i = 5;
printf("%d %d %d %d %d \n", i, i++, i++, i++, i);
printf("%d \n", ++i);
printf("%d \n", ++i);
printf("%d \n", ++i);
printf("%d %d %d %d \n", i, ++i, ++i, ++i);
}