问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#define M(x,y,z) xy+xz
main()
{int a=1,b=2,c=3;
printf("%d\n",M(a+b,++b+c,c+a));
}
#define M(x,y,z) xy+xz
main()
{int a=1,b=2,c=3;
printf("%d\n",M(a+b,++b+c,c+a));
}
define 不是函数,它会在编译阶段就直接做字符串替换
所以代码等价于
a+b*++b+c+a+b*c+a
注意,没有括号
-=-=-=
这里++b优先级最高,会在整个表达式计算之前先执行,所以b=3
1+3*3+3+1+3*3+1=24