【发布时间】:2012-04-13 21:54:23
【问题描述】:
可能重复:
Undefined Behavior and Sequence Points
How the statement x=x++ + y++; executes to the value 3?
我想知道 printf 在这种情况下是如何工作的:
int i = 0;
printf("%4d%4d", i++, i);
结果是 0 1
另一种情况
int i = 0;
printf("%4d%4d", i, i++);
结果是 1 0
【问题讨论】:
-
在一个语句中使用 i++ 和 i 是未定义的行为。它可以打印任何东西。见stackoverflow.com/q/4401104/79455
-
你的意思是 i++ 在这些情况下是如何工作的。
-
@rve: 在一个语句中使用
i++和i可以 可以;问题是当它们在没有干预序列点的情况下进行评估时。 -
请阅读comp.lang.c FAQ的第3部分。
-
@KeithThompson:我们又来了。相同的标签,相同的时间和相同的 Q :)