C语言的问题如图

 我来答
匿名用户
2018-12-13
展开全部

你是不是以后这题答案为什么不是70而是7?很简单,因为你的输出语句是%d,望采纳谢谢。。。

追问
能详细讲一下么,没太懂你的意思。谢谢
IT圈新鲜事
2018-12-13 · 记录IT技术领域中的新鲜事
IT圈新鲜事
采纳数:1722 获赞数:11351

向TA提问 私信TA
展开全部
宏定义就是简单替换,所以原语句等价于:
(a+b)>(c+d)?(a+b):(c+d)*10
所以答案的结果是(a+b)的值。
更多追问追答
追答
如果要想得70,需要宏定义的最外层加括号:
#define MAX(x,y) ((x)>(y)?(x):(y))
追问
如果我输出y就是60对吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Yuqi_Tan

2018-12-13 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3476万
展开全部
结果是:70。
原题答案为7,似有误。
追答
原题7是正确的!原因是:
#define MAX(x,y) (x)>(y)?(x):(y)
MAX是宏代换,而不是函数!
t=MAX(a+b,c+d)*10程序编译时进行代换,代换后是:
t=(a+b)>(c+d)?(a+b):(c+d)*10
程序运行时代入数字,数字代入后为:
t=(5+2)>(3+3)?(5+2):(3+3)*10
即:
t=7>6?7:6*10
t=7>6?7:60
答案肯定是7啦😄
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逆境不惧
2018-12-13
知道答主
回答量:14
采纳率:0%
帮助的人:9076
展开全部
70
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式