这题为什么运行结果是12不是19
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/28 04:00:05
![这题为什么运行结果是12不是19](/uploads/image/z/511306-34-6.jpg?t=%E8%BF%99%E9%A2%98%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%90%E8%A1%8C%E7%BB%93%E6%9E%9C%E6%98%AF12%E4%B8%8D%E6%98%AF19)
这题为什么运行结果是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可以不加括号,加上更符合规范.
这是什么东东?本人今年高二