何不二2 2022-03-12 19:27 采纳率: 100%
浏览 22
已结题

为什么输出值不是18?

问题遇到的现象和发生背景

为什么输出值是10而不是18?

问题相关代码,请勿粘贴截图
#include <stdio.h>
#define ADD(x) x+x
void main()
{
    int a=2,b=1;

    printf("%d\n",3*ADD(a+b));
}
运行结果及报错内容

10

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 谛凌 2022-03-12 19:41
    关注

    因为宏替换是替换位置,不是计算出结果
    ADD(1+2)其实是1+2+1+2
    所以3*2+1+2+1=10

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月12日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日