可能重复:
Output of multiple post and pre increments in one statement
Post-increment and pre-increment in 'for' loop
以下代码段
int i=0;
printf("%d %d",i++,i++);
给出输出
1 0
我能理解,但以下
int i=0;
printf("%d %d",++i,++i);
给出输出
2 2
有人能解释我第二种行为吗?
答案 0 :(得分:11)
两个printfs都会调用undefined-behavior。请参阅:Undefined behavior and sequence points
引用此链接:
简而言之,未定义的行为意味着 守护进程可能发生任何事情 从你的鼻子飞出来 女朋友怀孕了。
对于新手:不要尝试在函数调用参数列表中修改两次或更多次的变量值。有关详细信息,请click here了解其含义。 : - )
答案 1 :(得分:3)
他们都是未定义的行为。未定义多次修改变量i
。还有,C ++还是C?你需要下定决心,因为我认为预增量的行为在它们之间是不同的。
答案 2 :(得分:1)
你得到的是“未定义的行为”,因为你在序列点之间不止一次地改变了同一个变量。另一个编译器可以给你不同的结果。