我有一個簡單的程序來計算立方體的體積。它運行良好,但我得到的結果是錯誤的。它出現爲「Y是392」。任何人都可以幫助我理解爲什麼它是392?我剛剛開始C,所以我不明白所有的代碼。宏中的意外結果
我意識到這個宏寫得很糟糕,我只是想在重寫它之前瞭解它的行爲。
#define CUBE(x) (x*x*x)
void main(void);
void main(void){
int x, y;
x = 5;
y = CUBE(++x);
printf("Y is %d \n", y);
}
[Undefined behavior or false positive]的可能重複(http://stackoverflow.com/questions/4129239/undefined-behavior-or-false-positive) –
@mungpstrap如果您還不瞭解其他問題回答/評論,檢查'gcc -E your source.c'的輸出。這將運行預處理器(展開宏)並向您展示實際的源代碼將被編譯......或許它會更清晰。 – mah
@mah, 好的,謝謝我會試着看看,雖然這裏有一些很好的解釋。這仍然可能在未來有用。 – mungostrap