当前位置: 代码迷 >> C语言 >> [求助]有高手帮我讲一下
  详细解决方案

[求助]有高手帮我讲一下

热度:135   发布时间:2005-07-05 13:42:00.0
[求助]有高手帮我讲一下
#include <stdio.h>
#define MAX(x,y) x>y?x:y
main()
{
int a=2,b=5,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d",t);
}
我发现无论t=MAX(a+b,c+d)*10语句中后边是+ - * /,不管数是多少,输出的结果都是7,不明所以..请高手指点一下是什么原因?
----------------解决方案--------------------------------------------------------
呵呵。。。
差点被迷惑了,当把宏定义解开时就已经没有()了,而与10的操作也因为短路而没有被执行所以一直是7!
最主要的原因就是你的宏定义没有加括弧!

[此贴子已经被作者于2005-7-5 13:57:04编辑过]



----------------解决方案--------------------------------------------------------
能说的更清楚一些吗??所谓的短路是怎么回事?学的时间太短了,搞不清楚.
----------------解决方案--------------------------------------------------------
短路这词是2楼的斑竹自己想的还是在C里有这么专用词啊?
----------------解决方案--------------------------------------------------------
请注意符号优先级问题 你这个错误就错在“()”楼上已经提示你了
----------------解决方案--------------------------------------------------------
工式要展开
2+5>3+3?2+5:3+3*10
7>6?7:33
所以答案是7
----------------解决方案--------------------------------------------------------
  相关解决方案