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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘圣涛 中级黑马   /  2014-7-10 00:05  /  7327 人查看  /  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 个回复

倒序浏览
结果应该是1吧,首先是判断 a是否小于b ,如果小于输出a,如果不小于判断c是否小于d,如果小于输出a,不小于则输出d,    那么 a=1,b=2 ,  第一次判定  a<b?   也就是  1<2?    那应该为真,返回后面的a,   也就是1.  我是这么理解的
回复 使用道具 举报
a<b?a:b 问号左边的如果为真,就返回a,为假就返回b。
在看看你上面的那个式子,a<b?a:c<d?a:d;  意思就是如果a<b为真,就返回a,为假就返回c<d?a:d,而这一题a=1;b=2   所以最终值为a
回复 使用道具 举报
这个毫无迷惑性,怎么求都是一个答案:1  应该来试试这个
  1. int x = 3, y = 2;
  2. x > y ? 10 : ++y > 2 ? 20 : 30
复制代码
回复 使用道具 举报
本帖最后由 零下_1° 于 2014-7-10 01:48 编辑

从左到右开始算   ((a<b?a:c)<d)?a:d;——>((1)<4)?1:4——>1
回复 使用道具 举报 1 0
上面已经有解了, 主要是看运算从左到右顺序和运算符号的运算优先顺序。把他们理解后,答案自然就清晰了。
回复 使用道具 举报
零下_1° 发表于 2014-7-10 01:47
从左到右开始算   ((a

这个肯定不对。<的优先级高于?:,c不可能去和?:结合,却不与<d结合
回复 使用道具 举报
PowerLion 来自手机 中级黑马 2014-7-10 04:39:59
8#
a小于b 所以返回:左边的a  返回值为1 后面不用看了
回复 使用道具 举报
幕夏 中级黑马 2014-7-10 10:09:52
9#
本帖最后由 幕夏 于 2014-7-10 10:11 编辑

是这样理解的把a<b?a:   (  c<d?a:d);
回复 使用道具 举报

用vc6.0验证了一下,结果是1,那个三目运算符是一个整体,应该不能拆开理解吧。如果c先与<d结合,那怎么出结果呢?(a<b)?a:(c<d)?a:d;——>((1<2)?1:(3<4))?1:4——>1?1:4
这个课怎么出结果啊?
回复 使用道具 举报
零下_1° 发表于 2014-7-10 13:39
用vc6.0验证了一下,结果是1,那个三目运算符是一个整体,应该不能拆开理解吧。如果c先与 ...

三目运算符的优先级比<低,你的做法违背了优先级。看我写的说明:http://bbs.itheima.com/thread-128465-1-1.html
回复 使用道具 举报
条件?数值1:数值2     条件成立,返回到数值1,  条件不成立 ,返回到数值2  ;就是这样 ,  这里a<b不成立,返回到c, 就是3       ,         3又小于d,成立吧, 就返回到a,
回复 使用道具 举报
zhs 中级黑马 2014-7-10 17:35:52
13#
输出结果为1
第一步:判断优先级,关系运算a<b和c<d的优先级高于条件运算?:的优先级,所以第一步后运算结果为1?a:1?a:d
第二步:经过第一步计算后1?a:1?a:d只有条件运算?:,优先级相同自左向右运算,可以看作1?a:{1?a:d},把大括号内部分看作一个整体运算前面的条件运算,即1?a:整体。
第三步:因为1为真,所以直接输出a的值即1,不考虑整体这一块即可,如果为假才会计算整体这一块。
回复 使用道具 举报
输出结果应该是1,双目就是一个if语句而已,if(a<b)返回a else if(c<d) 返回a  else 返回d;,用if更容易理解,希望对你有所帮助
回复 使用道具 举报
来学习学习
回复 使用道具 举报
很详细 又学到东西了
回复 使用道具 举报
一生有你qms 来自手机 中级黑马 2014-7-10 18:31:57
17#
我咋记得是从右左运算呢?
回复 使用道具 举报
{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}
回复 使用道具 举报
谢谢大家的解答,我差不多明白了
回复 使用道具 举报
没错,就是1
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马