A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© koukou 中级黑马   /  2014-6-8 18:41  /  1331 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a=1,b=2,c=3,d=4;

printf("%d",a<b?a:c<d?c:d);请问最后的输出结果是?能不能说点详细点

2 个回复

倒序浏览
最后输出的结果是1
三目运算的格式:条件?数值1:数值2
运行原理:以?为分隔点,前面为条件,后面为数值,:前面为数值1,冒号后面为数值2。如果条件成立就输出冒号前面的数值1,如果条件不成立就输出冒号后面的数值2
你所求的a<b?a:c<d?c:d是三目运算
可以这样理解:
条件为a<b ; 数值1为a ;数值2为c<d?c:d
(以?为分隔点判断条件是否成立,成立就输出数值1)
a为1,b为2,条件a < b成立,就输出a 则输出结果为1
因为a<b?a:c<d?c:d这个表达式把c<d?c:d看成一个整体了,但a<b条件成立就输出了a ,所有结果为1
a<b ? a : c < d ? c : d == a < b ? a:(c<d ? c : d)

如果你是的表达是(a<b ? a : c )< d ? c : d 则输出结果为3
可以这样理解:
第一个三目运算是:a<b ? a : c
a为1,b为2,条件a < b成立,就输出冒号前面的数值1,也就是输出a,则为1
第二个三目运算是:(a<b ? a : c )< d ? c : d 也就是前面表达式的结果与d比较
(a<b ? a : c )结果为1,d为4, 条件(a<b ? a : c )< d成立,就输出c,则为3

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
输出结果为1,先算右边的三目运算符,得到一个值,得到后的值在同左边组成一个三目运算符
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马