C |宏与预处理器|问题6

null

#include <stdio.h>
#define square(x) x*x
int main()
{
int x;
x = 36/square(6);
printf ( "%d" , x);
return 0;
}


(A) 1 (B) 36 (C) 0 (D) 编译错误 答复: (B) 说明: 预处理器将正方形(6)替换为6*6,表达式变为x=36/6*6,x的值计算为36。请注意,对于表达式“x=square(6-2)”宏也将失败

如果我们想从宏方块(x)中获得正确的行为,我们应该将宏声明为

#define square(x) ((x)*(x))  

这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享