C中宏中括号的必要性
我尝试使用宏的定义。SQR在以下代码中:
SQR
#define SQR(x) (x*x)int main(){ int a, b=3; a = SQR(b+5); // Ideally should be replaced with (3+5*5+3), though not sure. printf("%d\n",a); return 0;}
印出来23..如果我将宏定义更改为SQR(x) ((x)*(x))那么输出就和预期的一样,64..我知道调用C中的宏将调用替换为宏的定义,但我仍然不明白它是如何计算的23.
23
SQR(x) ((x)*(x))
64
鸿蒙传说
GCT1015
慕的地10843
相关分类