2016-02-28 156 views
-4

想知道 「11」 這怎麼C預處理指令的答案:C預處理指令(SQR-的Funktion)

#define SQR(x) x*x 

int main() 
{ 
    SQR(2+3); 
} 
+0

不'11'在屏幕上打印? –

+0

是的,它是2 + 3 * 2 + 3。但爲什麼? - 不知道 – vamosfener

+0

1.因爲宏擴展是啞文本替換。我問是否打印?,你說是的,我嚴重懷疑。可能它(main)返回11.從C書中讀取宏應該有所幫助。 –

回答

0

嘗試手動微距擴大。

這將是2+3*2+3,這被評價爲11

+1

爲什麼低估你的答案?它是正確的。也許一點...最小的,但是正確的。最好補充一點,這就是圍繞參數添加括號總是更好的原因。試試這個:'#define SQR(x)((x)*(x))' –

+0

我只是想知道爲什麼它會做2 + 3 * 2 + 3 – vamosfener

+0

@vamos操作順序:先乘,再從左到右加。 3 * 2是6,加2是8,加3是11。 –