C语言的问题如图
4个回答
展开全部
宏定义就是简单替换,所以原语句等价于:
(a+b)>(c+d)?(a+b):(c+d)*10
所以答案的结果是(a+b)的值。
(a+b)>(c+d)?(a+b):(c+d)*10
所以答案的结果是(a+b)的值。
更多追问追答
追答
如果要想得70,需要宏定义的最外层加括号:
#define MAX(x,y) ((x)>(y)?(x):(y))
追问
如果我输出y就是60对吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是:70。
原题答案为7,似有误。
原题答案为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啦😄
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询