C语言,这个的结果,是怎么算出来 的?

[复制链接]
查看11 | 回复5 | 2012-4-16 01:55:58 | 显示全部楼层 |阅读模式
#define MAX(x,y)(x)>(y)?(x):(y)t = MAX(a+b,c+d)*10;展开后为:t = (a+b)>(c+d)?(a+b):(c+d)*10即 t = (7)>(6)?(7):(6)*10 就是 t = 7正确定义方法:#define MAX(x,y)((x)>(y)?(x):(y))...
回复

使用道具 举报

千问 | 2012-4-16 01:55:58 | 显示全部楼层
答案是7,MAX(x,y)(x)>(Y)?(x):(y)应为MAX(x,y)(x)>(y)?(x):(y)宏定义只是单纯的替换t=MAX(a+b,c+d)*10;即 t=(a+b)>(c+d)?(a+b):(c+d)*10 ;:后面的内容是一个整体,这个条件表达式为真,所以应该输出a+b即7...
回复

使用道具 举报

千问 | 2012-4-16 01:55:58 | 显示全部楼层
(x)>(Y)?(x):(y)三目运算符,先求表达式(x)>(y)的值,为真时,求出其值并作为整个表达式的值,否则表达式(y)的值作为整个表达式的值 结果就不说了...
回复

使用道具 举报

千问 | 2012-4-16 01:55:58 | 显示全部楼层
宏定义MAX 如果X大于Y则返回X,否则返回Ya+b=7 c+d=6
则t=7*10应该是显示70吧!...
回复

使用道具 举报

千问 | 2012-4-16 01:55:58 | 显示全部楼层
很简单因为#defineMAX(x,y) (x)>(Y)?(x):(y) 说明MAX(x,y)是最大值,a+b=7>c+d=6所以t=70...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行