首页 > 解决方案 > C 中的预处理器指令

问题描述

为什么下面程序的输出是 125 而不是 5?

#include<stdio.h>

#define square(x) x*x

int main()
{
  int var;
  var = 125/square(5);
  printf("%d",var);
  return 0;
}

标签: cc-preprocessor

解决方案


这一行:

var = 125/square(5);

扩展为:

var = 125/5*5;

从左到右计算到25*5然后到125

要修复它,请将 的定义中的参数用括号括起来square,如下所示:

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

还要注意额外的括号x,以便在 eg1+2被传递到时实现预期的行为square


推荐阅读