[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