以下程序的输出结果是()。 #define abc(x,y)(×)<(y)?(×):(y)

这道题选b是为什么

#include<stdio.h>
#define abc(x,y)(x)<(y)?(x):(y)
int main(){
int a=10,b=15,c;
c=10*abc(a,b);
printf("%d\n",c);
return 0;
}
//明确abc(x,y)是宏定义,不是普通函数
//c=10*abc(a,b);相当于(10*x)<y?x:y即100<15?10:15很显然结果为15
//如果后面用括号括起来即c=10*(abc(a,b));那么就类似与普通的函数经过abc(a,b)得到10,然后和10再相乘得到100
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-01-03
宏展开后
c=10*(a)<(b)?(a):(b)
注意*的优先级比<高
所以10*(a)<(b)是(10*(a))<(b)
显然的子表达式(10*(a))<(b)为假,所以c只为b,15

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网