带参宏定义的编译预处理

带参宏定义的编译预处理第二题编译预处理后为什么会变成,预处理命令会把括号换成指定的符号吗,那如果想让结果等于19该怎么写

如果要结果等于19,则需要修改一下宏M的书写方式,即将:
#define M(x,y,z) x*y+z
修改为:
#define M(x,y,z) (x)*(y)+(z)
或修改为(这是比较规范的):
#define M(x,y,z) ((x)*(y)+(z))
在手机上用易历知食软件里的微C程序设计来验证一下,手机上代码如下图:

手机上运行的结果如下图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-09
这东西,其实你自己手写一下就明白了。
M(a+b, b+c,c+a)
展开后就是a+b*b+c+c+a
一看就明白了吧,
如果不是M(x,y,z) (x)*(y)+(z),那么展开就是错的。

追问

那如果写成M( (a+b),(b+c),(c+a) ) 结果就是19了吧

本回答被提问者采纳
相似回答