c语言 宏定义 #define max(a,b) a>b?a:b printf("%d",max(max(2,1),3); 为什么输出的是2

 我来答
zyq_107
2012-10-20 · TA获得超过900个赞
知道小有建树答主
回答量:440
采纳率:100%
帮助的人:468万
展开全部
#define max((a),(b)) ((a)>(b)?(a):(b))
这样就好了
更多追问追答
追问
不加括号,为-2。能具体解释下吗
追答
宏定义的函数在编译时将定义的值在标识出展开
printf("%d",max(max(2,1),3)); 实际上就是
printf("%d",2>1?2:1>3?1:3); 输出当然是2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伦悦宜yS
2012-10-20 · TA获得超过674个赞
知道小有建树答主
回答量:769
采纳率:100%
帮助的人:375万
展开全部
输出2,printf("%d",2>1?2:1>3?1:3);
更多追问追答
追问
先计算哪个?
追答
因为是右结合故先算后面的那个
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式