#define N 3
#define Y(n) ((N+1)*n)
执行该语句z=2*(N+Y(5+1)后 z 的值是____?
还有
已知宏定义#define SQ(x)x*x执行语句printf("%d",10/SQ(3))后的输出结果是什么?
急求详细执行过程,谢谢!
如编译的时候,编译器将SQ(3) 替换成3*3
所以你print的语句就变成printf("%d",10/3*3)
由运算优先级从左到右10/3得3,再用3*3得9
所有printf的内容为9
要记住的是宏定义只是在编译时进行的文本替换操作,而不会像函数那样的
这就是为什么说宏定义存在着缺陷了,它很容易产生与你预期不同的结果,在c++中宏也就被废了

