日期:2014-05-20  浏览次数:20769 次

boolean型怎么用啊
下列程序段执行后b3的结果是?
boolean b1=true,b2,b3;
b3 = b1 ? b1:b2;

A) 0 B) 1 C)true D) false

偶认为b3为false 此时 b3=b1为假 则三目运算后位b2即为false,但答案是true。求解释

------解决方案--------------------
小弟是菜鸟。刚踏入这行业。看到你标题我觉得我能解释,但是内容解释不了
------解决方案--------------------
b3 = b1 ? b1:b2;
相当于
if(b1==true){
 b3=b1;
}else{
b3=b2;
}
------解决方案--------------------
显然<=>b3=( b1 ? b1:b2),结果为true,b3==b1的话就另外考虑了.


------解决方案--------------------
b2都没初始化值,这段代码有问题。
------解决方案--------------------
这里的=号是赋值运算符,boolean型变量默认是false。在这里,三目运算符的优先级高于赋值运算符,所以先判断b1的值是true,故将b1的运算符赋给b3,所以最后值为真。
------解决方案--------------------
Java code

boolean b1=true,b2,b3;
b3 = b1 ? b1:b2;
//三目运算
// 结果相当于:
// b3 = (b1 ? true : b2);
// b3 = ( true ? true:b2)
// b3 = true;
if(b1 == true) {
    b3=b1;
} else {
    b3=b2;
}

------解决方案--------------------
探讨
这里的=号是赋值运算符,boolean型变量默认是false。在这里,三目运算符的优先级高于赋值运算符,所以先判断b1的值是true,故将b1的运算符赋给b3,所以最后值为真。

------解决方案--------------------
下列程序段执行后b3的结果是?
boolean b1=true,b2,b3;
b3 = b1 ? b1:b2;

A) 0 B) 1 C)true D) false


解: 因为 b1=true ; 所以 b3 = b1 ? b1:b2;--> b3 = b1 (赋值); 而 b1=true 则 b3 = true
------解决方案--------------------
同上所说
------解决方案--------------------
应该是这样的:先计算b1?b1:b2--->true,然后将其结果赋值给b3,故b3为true
------解决方案--------------------
楼主看好了 使用的=不是== 
=代表的是赋值 这时候b3已经是true了
------解决方案--------------------
好问题,记下来看看