'printf'中的后期/预增量

the*_*ick 0 c c++ operator-precedence

可能的重复:
在一个语句中输出多个post和pre
增量在'for'循环中的后增量和预增量

以下代码段

int i=0;
printf("%d %d",i++,i++);
Run Code Online (Sandbox Code Playgroud)

给出输出

1 0

我可以理解,但以下

int i=0;
printf("%d %d",++i,++i);
Run Code Online (Sandbox Code Playgroud)

给出输出

2 2

有人能解释我第二种行为吗?

Naw*_*waz 11

两个printfs都调用undefined-behavior.请参阅:未定义的行为和序列点

引用此链接:

简而言之,未定义的行为意味着任何事情都可能发生在从你的鼻子飞到你女朋友怀孕的守护进程中.

对于新手:不要尝试在函数调用参数列表中修改变量的值两次或更多次.有关详细信息,请单击此处以了解其含义.:-)