2015-09-09 78 views
-2

輸出:9 49.但我不明白第二個輸出。爲什麼是49?我不明白增量c

#include <stdio.h> 
#define PRODUCT(x) (x * x) 
main() 
{ 
int i = 3, j, k ; 
j = PRODUCT(i++) ; 
k = PRODUCT (++i) ; 
printf ("\n%d %d", j, k) ; 
} 
+4

它不能被理解,因爲它調用[未定義的行爲](http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior)。 – Kninnug

+2

在SO上丟失了這樣的問題。 – ameyCU

回答

2

在你的代碼,這

PRODUCT(i++); 

評估是

(i++ * i++); 

它調用未定義的行爲。