解释一段C语言的程序

来源:百度知道 编辑:UC知道 时间:2024/05/06 18:42:06
#include <stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
void main()
{
int i,j,k;
i=10;j=15;k=10*MIN(i,j);
printf("%d\n",k);
}
这段程序运行的结果是15,请帮忙解释一下,谢谢。

这是一个考宏定义和运算符优先级的题…将宏函数代入并代入具体的数后k赋值语句就变成:k=10*10<15?10:15;跟据?:语句先算?前的语句又<的优先级低于*所以原语句就变成k=100<15?10:15;得解

如一口说的,MIN(x,y)不是函数名,代入得时候把整个式子不加符号放进去,根据优先级先要执行乘法,再执行比较

k=10*MIN(i,j);

相当于:

k=10*(i)<(j)?(i):(j); // 千万不要自作聪明加上括号

把i=10 j=15带入,得到k的值为15。