这题为什么运行结果是12不是19

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 01:20:34

这题为什么运行结果是12不是19
这题为什么运行结果是12不是19
 

这题为什么运行结果是12不是19
程序中的宏定义是在编译中处理,而运算是在运行中进行.
编译中对宏表达式只是简单的替换,并不进行计算.所以编译完成后,x被换成a+b,y被换成b+c,z被换成c+a,输出语句实际上是 printf("%d\n“,a+b*b+c+c+a).
注意没有括号,因为只是替换,编译程序不会考虑你的意图加上括号.
所以运行中代人a,b,c的值,输出结果就成了1+2*2+3+3+1=12.
如果要输出19,要改成 printf("%d\n",M((a+b),(b+c),(c+a))),当然如果你理解了,c+a可以不加括号,加上更符合规范.

这是什么东东?本人今年高二