猿问

#define赋值

#define MIN(a<b)  a<b?b:a+1

void main()

{

int i=2,j=5;

printf("%d",10*MIN(i,j));

}

为什么答案是3.请问哪里需要注意吗

永不坠落的陨石
浏览 2051回答 1
1回答

太阳雨下

首先#define的作用是在编译之后,会将#define的内容原封不动地替换调,那么:printf("%d",10*MIN(i,j));这行在编译之后就是:printf("%d",10*2<5?5:2+1);这样10*2<5 就是20<5返回:false自然输入:就是2+1,结果就是3需要注意#define不是计算之后再返回结果,而是普通的替换
随时随地看视频慕课网APP
我要回答