黑马程序员技术交流社区

标题: 问一个关于三元运算符的问题 [打印本页]

作者: 焦允    时间: 2013-8-30 23:09
标题: 问一个关于三元运算符的问题
本帖最后由 焦允 于 2013-8-31 10:09 编辑

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


作者: べPNヤ    时间: 2013-8-30 23:19
结果是true JVM默认从左到右读取 格式为 false ?false:(false ?false:true)读到第一个? 就把false作为第一个结果 :后面的作为一个表达式结果
作者: 328078121    时间: 2013-8-30 23:19
结果是true,
false ?false:false
false 执行":"得到的false
false ?false:true
又是假得到“:”后面的true


作者: 梦航    时间: 2013-8-30 23:25
  if false?
    |——Y->false
    |——N
           |——if false?
                   |——Y->false
                   |——N->true
作者: yangxin540    时间: 2013-8-30 23:26
结果是true。
false ?false:true这个表达式的结果作为前面表达式的选择结果false ?false:后表达式结果
作者: 老衲玩IT    时间: 2013-8-30 23:59
三元运算规则:逻辑表达式 ? 为真返回 : 为假返回
当表达式难读时,可按运算优先级按从左到右的顺序加入小括号拆分
(false ?false:false )?false:true  
false?false:true
true
作者: 吴光新    时间: 2013-8-31 07:05
本帖最后由 吴光新 于 2013-8-31 07:11 编辑


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

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

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



作者: xiangzi2008006    时间: 2013-8-31 09:17
false ?false:false ?false:true,我们标记4个false依次为flag1,flag2,flag3,flag4方便说明。
一开始判断flag1为flag,所以直接跳到第一个?后面的flag3处进行判断,因为flag3也是false,那么就直接跳到第二个?之后的ture进行判断,结果返回true。要记住,3元运算是从左往右判断的。
作者: itachi    时间: 2013-8-31 10:05
三元运算符
语法:条件 ? 结果1 : 结果2
说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2
false ?false:(false ?false:true)
条件   结果1     结果2
结果2也是一个三元运算符,条件为不满足,返回结果2:true
运算符变为
false ?false:true
条件为不满足,也是返回结果2,为true
所以解脱为true




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2