为了账号安全,请及时绑定邮箱和手机立即绑定

#define赋值

#define赋值

C C++
永不坠落的陨石 2016-01-01 13:28:33
#define MIN(a<b)  a<b?b:a+1void main(){ int i=2,j=5; printf("%d",10*MIN(i,j));}为什么答案是3.请问哪里需要注意吗
查看完整描述

1 回答

?
太阳雨下

TA贡献7条经验 获得超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不是计算之后再返回结果,而是普通的替换

查看完整回答
反对 回复 2016-01-01
  • onemoo
    onemoo
    #define之类的预处理指示是作用在编译之前的预处理阶段。
  • 1 回答
  • 1 关注
  • 2046 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信