#include
#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替换square(6),表达式变为x = 36/6 * 6,x的值计算为36。请注意,对于表达式“ x = square(6-2),宏也将失败”
如果我们要从macro square(x)获得正确的行为,则应将宏声明为
#define square(x) ((x)*(x))
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。