首页 > 试题广场 >

下列代码的输出结果是_____ boolean b=true

[单选题]
下列代码的输出结果是_____
boolean b=true?false:true==true?false:true;
System.out.println(b);
  • true
  • false
  • null
  • 空字符串
推荐
==  优先级高于 三目运算符,先判断   true == true,此时返回为  true,
这时表达式为   boolean b = true?false:true?false:true
此时三目运算符从右向左执行,true?false:true,返回false
这时表达式为  boolean b = true?false:false;
结果为:boolean b = false ;
编辑于 2016-02-25 10:17:34 回复(27)
	int i = 1;
	int j = 1;
	boolean a=true?true:++i==2?false:true;
	System.out.println("a:"+a+", i:"+i); 
	boolean b=false?true:++j==2?false:true;
	System.out.println("b:"+b+", j:"+j); 
测试了一下,后面似乎确实是没有执行的。
上面的代码输出为:
        a:true, i:1
        b:false, j:2
也就是说,当前面 a=true?true:++i==......成立时 后面的++i是没有执行的。而当 b=false?true:++j==......时,由于前面没有满足,所以才执行了后面的++j;
发表于 2016-02-20 12:50:16 回复(7)
我觉得应该是是这个样子的吧boolean b=true?false:true==true?false:true;,==运算符优先级高于=运算符,所以该表达式先执行==两边的即  第一步:((true==true)?false:true) 结果为false;第二步: true ? false :  false结果为false;第三步:b = false;
发表于 2016-05-04 10:51:54 回复(2)
我觉得应该这样理解吧,?:优先级比==低,所以先运行==,先执行后半部分true==true?false:true,这里返回false,所以下一步执行的是前半部分b=true?false:false
所以返回的是第一个false

发表于 2015-12-11 17:55:07 回复(0)
在eclipse试了下,不管后边改成true或false,输出都是false。
因为运算中第一个为true,直接输出第一个?后边的就可以了。所以只与第一个三目运算有关吧。
发表于 2016-07-25 14:02:32 回复(2)
AKG头像 AKG
谁能再解释一下??完全没懂。。
1403
发表于 2015-12-11 00:23:59 回复(0)
==  的优先级高于三目运算符
true?false:true==true?false:true;
等价于
true?false:(true==true)?false:true;
所以就返回false;
如果题目是
true?true:true==true?false:true;
结果就返回true了
发表于 2015-12-14 14:04:50 回复(0)
输出false啊。
条件表达式 [A]?b:c
若A成立true,则返回b,否则返回c
true?false:true == true?false:true
先判断第一个true结果true,返回第一个false,后面的不执行
编辑于 2016-02-25 10:15:54 回复(8)
根本不会执行后面的语句,由于boolean的特性,赋值为true即返回true,直接执行到?后面的false返回了!!!!!
发表于 2016-03-04 10:56:21 回复(0)
 boolean b=false?false:true==true?false:true;
 System.out.println(b);
后面的应该会先执行,不然我这个就返回true了
java从右往左结合...
发表于 2015-12-28 10:43:54 回复(1)
优先级问题和无聊的 i++,++i 问题,是最 TM 没用的题。
既不能提高你的编程水平,也不能说明你的编程能力。
请使用括号。谢谢。
发表于 2016-09-15 17:15:44 回复(36)
3
4
#include "stdio.h"
main(){
    print("Hello world!!!");
}
发表于 2021-05-18 17:24:07 回复(0)
类似于&&和||运算符,直接短路了,后面不会执行了吧

发表于 2019-11-18 11:23:17 回复(0)
个人理解
a?b:c?d:e 加上括号 a?b:(c?d:e) 
这是为了和(a?b:c)?d:e 进行区分,这个括号说明了后面c?d:e是一个整体,但不是说要从右边开始计算。
还是从a开始计算,如果进入b,则不会计算后面的内容,具有短路性质,不需要计算后面表达式中优先级比三目运算符高的内容。
发表于 2019-03-15 14:18:16 回复(0)
三目运算符是从右往左结合运算的,又搞错了
发表于 2017-09-02 09:58:57 回复(0)
这个式子具有短路性质,因为b=true直接返回false,后面一堆true==true?false:true可以不看没用
发表于 2017-08-27 16:04:53 回复(0)
 int j = 1;
 bool a=true?true:j=2?j=3:j=4;
 cout<<j<<endl;//output:j=1,前面满足时不执行后面
编辑于 2017-08-07 15:57:24 回复(0)
我觉的 这种面试题没什么意义 ! 像这种表达式应该加括号区分 别人在读你代码时还要慢慢想运算优先级,是你都烦吧
发表于 2016-11-18 11:00:16 回复(0)
我觉得这样的代码不推荐写吧
发表于 2016-08-17 10:15:55 回复(0)
false-true-false
发表于 2016-03-08 12:55:39 回复(0)
B,析:三目运算X?Y:Z,X是一个判断,ture则输出Y,false则输出Z
发表于 2015-12-17 21:13:12 回复(0)