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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 焦允 中级黑马   /  2013-8-30 23:09  /  1646 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 焦允 于 2013-8-31 10:09 编辑

false ?false:false ?false:true      这个结果是什么?该怎么理解?
请哪位大侠帮忙解释一下!

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

8 个回复

正序浏览
itachi 中级黑马 2013-8-31 10:05:27
9#
三元运算符
语法:条件 ? 结果1 : 结果2
说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2
false ?false:(false ?false:true)
条件   结果1     结果2
结果2也是一个三元运算符,条件为不满足,返回结果2:true
运算符变为
false ?false:true
条件为不满足,也是返回结果2,为true
所以解脱为true

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
false ?false:false ?false:true,我们标记4个false依次为flag1,flag2,flag3,flag4方便说明。
一开始判断flag1为flag,所以直接跳到第一个?后面的flag3处进行判断,因为flag3也是false,那么就直接跳到第二个?之后的ture进行判断,结果返回true。要记住,3元运算是从左往右判断的。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
吴光新 黑马帝 2013-8-31 07:05:40
7#
本帖最后由 吴光新 于 2013-8-31 07:11 编辑


我的理解是执行到第一个':'时,会把第一个':'之后所有的的当做是第三个条件表达式,而这个条件表达式又是一个三元运算,所以会有两次运算

第一次运算
表达A部分的结果是false,那么就应该返回C部分,也就是false  ?  false  :  true
返回的有又是一个三元运算,所以进行了第二次运算

第二次运算
a部分的条件表达式结果为false,应该返回c部分,c部分是true,所以结果就是true。


评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
三元运算规则:逻辑表达式 ? 为真返回 : 为假返回
当表达式难读时,可按运算优先级按从左到右的顺序加入小括号拆分
(false ?false:false )?false:true  
false?false:true
true
回复 使用道具 举报
结果是true。
false ?false:true这个表达式的结果作为前面表达式的选择结果false ?false:后表达式结果
回复 使用道具 举报
  if false?
    |——Y->false
    |——N
           |——if false?
                   |——Y->false
                   |——N->true
回复 使用道具 举报
结果是true,
false ?false:false
false 执行":"得到的false
false ?false:true
又是假得到“:”后面的true

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
结果是true JVM默认从左到右读取 格式为 false ?false:(false ?false:true)读到第一个? 就把false作为第一个结果 :后面的作为一个表达式结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马