2016-02-28 94 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。 –