#include <stdio.h>
#define MAX(x,y) (x)>(y)?(x):(y)
int main()
{
int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
(a+b)>(c+d)?(a+b):(c+d)*10
记住define只是替换,所以t=MAX(a+b,c+d)*10;这一行实际变成了
t=(a+b)>(c+d)?(a+b):(c+d)*10; 乘号的优先级要高于三目运算符,所以*10是先跟(c+d)进行运算了。
如果要结果是70,应该加个括号t=( MAX(a+b,c+d) )*10;
将 t=MAX(a+b,c+d)*10;
这一句还原:
t = (a + b) > (c + d)?(a + b) : (c + d) * 10
;
相当于
t = (a + b) > (c + d)?(a + b) : ((c + d) * 10)
所以是7