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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

a<b?a:(c<d?a:d)
回复 使用道具 举报
返回值为1,a<b?就可以看出值为a;如果想了解全部,其实只要高清优先级就行了,可以查看表然后括起来。就容易解答了
回复 使用道具 举报
本帖最后由 骑着飞机去看海 于 2014-7-11 00:11 编辑
额这题有点蒙,不过仔细看看还是会懂的,

回复 使用道具 举报
本帖最后由 骑着飞机去看海 于 2014-7-11 00:12 编辑

这么霸气,这么多人回复。我也来看看,这个要先做优先级最高的,在做,低得~~
回复 使用道具 举报
零下_1° 发表于 2014-7-10 13:39
用vc6.0验证了一下,结果是1,那个三目运算符是一个整体,应该不能拆开理解吧。如果c先与 ...

都拆开,一步一步来,就懂了。
回复 使用道具 举报
是1吧,拆开看嘛,一个一个的分析就不会乱了  从左到右
回复 使用道具 举报
骑着飞机去看海 发表于 2014-7-10 23:29
这么霸气,这么多人回复。我也来看看,其实如何验证以上回复那个是对的呢?这个简单嘛,直接从新赋值就行了 ...

不从运算符的优先级和结合性入手的,都是蒙。<的优先级高于三目运算符,而三目运算符又是右结合的,a < b ? a : c < d ? a:d 的结合顺序是
(a < b) ? a : ((c < d) ? a : d)。 按你的说法,从左到右结合,那就变成:((a < b) ? a : c)) < d ? a : d 那么下面这个例子的结果应该是2,实际上是3
  1. int a = 3, b = 4, c = 6, d = 2;
  2. printf("%d\n",a < b ? a : c < d ? a:d );
复制代码
回复 使用道具 举报
大坏蛋 发表于 2014-7-10 23:39
是1吧,拆开看嘛,一个一个的分析就不会乱了  从左到右

先按照优先级来算。。。。。在 从右到左解题,
回复 使用道具 举报
fantacyleo 发表于 2014-7-10 01:43
这个毫无迷惑性,怎么求都是一个答案:1  应该来试试这个

有意思,你要是在加个括号更有意思了,哈哈。先算优先级最高的,成立后为1,然后再算优先级低的,从右往左算,就出来了。3>2,++y>2这两条都成立,所有方程就变成 1  ?  10: 1  ? 20:30 这样在从右到左算,1这个数判断,永远都是取第一个数。
回复 使用道具 举报
fantacyleo 发表于 2014-7-11 00:12
不从运算符的优先级和结合性入手的,都是蒙。

恩 我刚才有看了一下帮助文档,确实得从优先级算,才可以,优先级相等后在从右往左算起。
回复 使用道具 举报
骑着飞机去看海 发表于 2014-7-11 00:22
恩 我刚才有看了一下帮助文档,确实得从优先级算,才可以,优先级相等后在从右往左算起。 ...

也不对,如果从右往左算,那么我给出的++y那条就会得出不正确的答案。实际上,优先级和结合性只决定如何加括号,而与求值顺序无关。可以看这个帖子:http://bbs.itheima.com/forum.php ... mp;page=1#pid843906
回复 使用道具 举报
答案怎么算都是1,可一人一个思路真是五花八门,求个正解!
回复 使用道具 举报
fantacyleo 发表于 2014-7-10 01:43
这个毫无迷惑性,怎么求都是一个答案:1  应该来试试这个

答案是20吗?:(
回复 使用道具 举报
YKS 中级黑马 2014-7-11 01:57:46
34#
分开来算, a<b?a:c-->取a,再拿a和d比较:a<d?a:d-->取a的值
回复 使用道具 举报
回复 使用道具 举报
zhs 中级黑马 2014-7-11 08:40:42
36#
骑着飞机去看海 发表于 2014-7-10 23:17
额这题有点蒙,不过仔细看看还是会懂的,

是的、一点点来就好了
回复 使用道具 举报
骑着飞机去看海 发表于 2014-7-11 00:13
先按照优先级来算。。。。。在 从右到左解题,

我还是回家看书吧,又想当然了
回复 使用道具 举报
fantacyleo 发表于 2014-7-10 01:43
这个毫无迷惑性,怎么求都是一个答案:1  应该来试试这个

大神你说得对,那个例题算错了也是1。
这个应该是10。兄弟们来看看这个题吧
回复 使用道具 举报
PowerLion 发表于 2014-7-10 04:39
a小于b 所以返回:左边的a  返回值为1 后面不用看了

没错,不过你解释的不详细啊。哈哈
回复 使用道具 举报
骑着飞机去看海 发表于 2014-7-11 00:22
恩 我刚才有看了一下帮助文档,确实得从优先级算,才可以,优先级相等后在从右往左算起。 ...

不对,三目运算符的求值顺序是有规定的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马