这个程序运行后的结果怎么会是7而不是70?

来源:百度知道 编辑:UC知道 时间:2024/06/22 20:17:00
#define MAX(x,y)(x)>(y)?(x):(y)
void main()
{ int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}

#define MAX(x,y) (x)>(y)?(x):(y)
t=MAX(a+b,c+d)*10;相当于t=(a+b)>(c+d)?(a+b):(c+d)*10;
注意这里(c+d)*10是一个整体,用宏定义时注意的就是照抄,千万不要乱加括号
比如定义两个宏
#define M a+a
#define N a*a
那么M*N代表a+a*a*a,而不是(a+a)*a*a

优先权的问题吧