这道题的运行结果为什么是15?

来源:百度知道 编辑:UC知道 时间:2024/05/08 13:25:08
#include<stdio.h>
#define MIN(a,b) (a)<(b)?(a):(b)
main()
{
int m=10,n=15,k;
k=10*MIN(m,n);
printf("%d\n",k);
}

k=10*MIN(m,n)=10*(a)<(b)?(a):(b)=10*10<15?10:15
因为100<15是假,所以k=15

这个例子可以看出宏的局限性,宏只是单纯的用一段代码去替代另外一段代码

因为MIN是个宏,不是函数,因此编译的时候是直接替换。
所以,第二个语句,相当于:

K=10*(M)<(N)?(M):(N);//150<15?10:15.