[cprg]$ cat test.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int i=10;
printf("i=%d\ni++=%d\n++i=%d\n",i,i++,++i);
return 0;
}
[cprg]$ make
gcc -g -Wall -o test test.c
test.c: In function ‘main’:
test.c:7: warning: operation on ‘i’ may be undefined
test.c:7: warning: operation on ‘i’ may be undefined
[cprg]$ ./test
i=12
i++=11
++i=12
我不知道为什么会发生这种情况。请任何人 详细解释我在这里发生了什么?奇怪的printf行为?
这不是`printf`是造成了奇怪的行为。 – 2010-12-09 17:18:45
您应该意识到,编写测试程序(我希望这是一个测试,并且不用于生产代码)是很好的,并且很棒,但是在一个编译器上获得预期(或意外)结果并不能保证其他编译器的行为方式相同。 https://secure.wikimedia.org/wikipedia/en/wiki/Sequence_point阅读** C和C++中的顺序点**下的第4项** – Praetorian 2010-12-09 17:25:26