📜  C |宏和预处理器|问题6

📅  最后修改于: 2021-05-28 05:47:17             🧑  作者: Mango

#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基础课程》。