我是C語言的新手,所以plz sum1幫助我。 編寫的C代碼在一個語句中輸出多個帖子和前一個增量
int i=3;
printf("%d",++i + ++i);
編譯器gvs O/P = 9。怎麼樣?
Thanx提前
我是C語言的新手,所以plz sum1幫助我。 編寫的C代碼在一個語句中輸出多個帖子和前一個增量
int i=3;
printf("%d",++i + ++i);
編譯器gvs O/P = 9。怎麼樣?
Thanx提前
結果未定義。您在表達式中多次修改變量(或更準確地說sequence point)。
在序列點之間不止一次修改變量是未定義的,所以不要這樣做。
這可能是你的編譯器,對於這種特殊情況下決定evalate ++i + ++i
作爲
++i
,得到4,離開我是4++i
,產生5,使i爲5(如在現有步驟左i設定爲4,則遞增到5)另一個編譯器,或者如果您更改優化級別,或者稍微更改代碼,可能會產生不同的輸出。
同意:我檢查了我的gcc 4.1.2並收到了10的值(可能與你的9一樣容易解釋) – KevinDTimm 2010-09-28 13:28:09
謝謝。 – 2010-09-28 13:38:00
@KevinDTimm你能解釋一下你如何解釋'10'? – ajay 2014-03-25 19:49:29
爲什麼你認爲它不會給出這樣的結果? – KevinDTimm 2010-09-28 12:54:44