Почему в printf есть другой вывод, тот же результат между a и a + 1?

Когда я программирую на программировании на С, я пишу:

a = 2;
printf("%d %d", ++a, a);

а также

a = 2;
printf("%d %d", ++a, a + 1);

как аналогичный результат

3 3

Но когда я их обмениваю, они различаются:

a = 2;
printf("%d %d", a, ++a);
3 3

а также

a = 2;
printf("%d %d", a+1, ++a);
4 3

почему у вас разные результаты?

1 ответ

printf("%d %d", a, ++a);

Это приводит к неопределенному поведению. Это зависит от того, как printf() обрабатывает аргументы.

licensed under cc by-sa 3.0 with attribution.