Это неопределенное поведение в 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);

}

Ответы на вопрос(1)

Ваш ответ на вопрос