帮我看看,关于宏替换?我怎么也分析不出来???

来源:百度知道 编辑:UC知道 时间:2024/05/20 11:29:00
#define MIN(x,y) (x)<(y)? (x):(y)
main()
{int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
运行的结果是15,但我分析出来是100,谁知道这15是怎么来的?帮我写写吧!~谢谢@!

因为:
k = 10*(10)<(15)?(10):(15)
因为乘法的优先级更高,所以先做10*10=100.
那么100比15小吗?
不是,那么选择冒号后面的,15.
注意宏只是替换不是函数,所以如果要达到目的的话得这样:
#define MIN(x,y) ( (x)<(y)? (x):(y) )