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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘圣涛 中级黑马   /  2014-7-10 00:05  /  6877 人查看  /  45 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘圣涛 于 2014-7-11 11:23 编辑

我复习没多久,之前对C语言的知识了解的少点,今天看到关于三目运算符的题目,就是想不明白了,求大神解答。
题目如下:
假设 a=1,b=2,c=3,d=4;
        a<b?a:c<d?a:d;
         输出的结果是多少啊???求解,一直没搞懂

45 个回复

正序浏览
求解!!
回复 使用道具 举报
要搞懂这道题 你应该查看的是符号的优先级  然后再看这道题
回复 使用道具 举报
我怎么没有技术分啊:o
回复 使用道具 举报
看下这组输出就会明白了,a>b?b:c<d?d:a 输出 d=4;
a>b?b:c>d?d:c 输出 3;
a<b?b:c<d?d:a 输出 b=2;
a>b?b:0?d:a 输出 1。
充分说明:
1.运算符优先级。
2.同级,从左至右执行。
回复 使用道具 举报
(a<b) ? a : (c < d ? a : d)
首先是看a是否小余b,如果a小于b,那么结果为 a.
如果a大余b,结果为(c < d ? a: d),
这里的a=1,b=2,c=3,d=4.
1<2成立,所以整个表达式结果为 1


回复 使用道具 举报
其实就是从左到右依次判断,先判断a<b吗,如果小于,就把a传出去,后面就不再运行,如果大于就判断第二个条件表达式c<d吗,如果小于,传a否则传d
回复 使用道具 举报
骑着飞机去看海 发表于 2014-7-11 00:22
恩 我刚才有看了一下帮助文档,确实得从优先级算,才可以,优先级相等后在从右往左算起。 ...

不对,三目运算符的求值顺序是有规定的
回复 使用道具 举报
PowerLion 发表于 2014-7-10 04:39
a小于b 所以返回:左边的a  返回值为1 后面不用看了

没错,不过你解释的不详细啊。哈哈
回复 使用道具 举报
fantacyleo 发表于 2014-7-10 01:43
这个毫无迷惑性,怎么求都是一个答案:1  应该来试试这个

大神你说得对,那个例题算错了也是1。
这个应该是10。兄弟们来看看这个题吧
回复 使用道具 举报
骑着飞机去看海 发表于 2014-7-11 00:13
先按照优先级来算。。。。。在 从右到左解题,

我还是回家看书吧,又想当然了
回复 使用道具 举报
zhs 中级黑马 2014-7-11 08:40:42
36#
骑着飞机去看海 发表于 2014-7-10 23:17
额这题有点蒙,不过仔细看看还是会懂的,

是的、一点点来就好了
回复 使用道具 举报
回复 使用道具 举报
YKS 中级黑马 2014-7-11 01:57:46
34#
分开来算, a<b?a:c-->取a,再拿a和d比较:a<d?a:d-->取a的值
回复 使用道具 举报
fantacyleo 发表于 2014-7-10 01:43
这个毫无迷惑性,怎么求都是一个答案:1  应该来试试这个

答案是20吗?:(
回复 使用道具 举报
答案怎么算都是1,可一人一个思路真是五花八门,求个正解!
回复 使用道具 举报
骑着飞机去看海 发表于 2014-7-11 00:22
恩 我刚才有看了一下帮助文档,确实得从优先级算,才可以,优先级相等后在从右往左算起。 ...

也不对,如果从右往左算,那么我给出的++y那条就会得出不正确的答案。实际上,优先级和结合性只决定如何加括号,而与求值顺序无关。可以看这个帖子:http://bbs.itheima.com/forum.php ... mp;page=1#pid843906
回复 使用道具 举报
fantacyleo 发表于 2014-7-11 00:12
不从运算符的优先级和结合性入手的,都是蒙。

恩 我刚才有看了一下帮助文档,确实得从优先级算,才可以,优先级相等后在从右往左算起。
回复 使用道具 举报
fantacyleo 发表于 2014-7-10 01:43
这个毫无迷惑性,怎么求都是一个答案:1  应该来试试这个

有意思,你要是在加个括号更有意思了,哈哈。先算优先级最高的,成立后为1,然后再算优先级低的,从右往左算,就出来了。3>2,++y>2这两条都成立,所有方程就变成 1  ?  10: 1  ? 20:30 这样在从右到左算,1这个数判断,永远都是取第一个数。
回复 使用道具 举报
大坏蛋 发表于 2014-7-10 23:39
是1吧,拆开看嘛,一个一个的分析就不会乱了  从左到右

先按照优先级来算。。。。。在 从右到左解题,
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马