黑马程序员技术交流社区
标题:
问一个关于三元运算符的问题
[打印本页]
作者:
焦允
时间:
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 编辑
QQ截图20130831065834.jpg
(6.44 KB, 下载次数: 63)
下载附件
2013-8-31 07:00 上传
我的理解是执行到第一个':'时,会把第一个':'之后所有的的当做是第三个条件表达式,而这个条件表达式又是一个三元运算,所以会有两次运算
第一次运算
表达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