C语言程序结果题

来源:百度知道 编辑:UC知道 时间:2024/05/30 13:42:56
#define MACKET(a,b) a>b?a&b:a*b

unsigned int a = 6;
int b = 9;
int c = 3;
printf("%x\n",MACKET(a,b-c));

跟我说一下答案是怎么来的?

#define MACKET(a,b) a>b?a&b:a*b //意思是MACKET(a,b)代替a>b?a&b:a*b。这时可以将MACKET()看成是一个函数:int MACKET(int a,int b)
{
return a>b?a&b:a*b;
}
a>b?a&b:a*b;的意思是:如果a>b成立,就取冒号前面的a&b的值,不成立就取冒号后面a*b的值;//?:为三目运算符,如果不懂就看参考是书。
所以最后结果就为:36

等于 MACKET(6,9-3)然后带进去 首先a=6 b=6 所以 a不大于b 所以MACKET的值应该等于a乘以b 就等于 6*9-3 =51 %x是十六进制输出 就是33

同意
novawangli
几个月没碰这个了。
应该正确。