-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) ;
}
輸出: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) ;
}
在你的代碼,這
PRODUCT(i++);
評估是
(i++ * i++);
它調用未定義的行爲。
它不能被理解,因爲它調用[未定義的行爲](http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior)。 – Kninnug
在SO上丟失了這樣的問題。 – ameyCU