我最近开始自学Java,在使用CodingBat后,我留下了一个非常基本的问题.为什么这回归"真实"?
a = 1, b= -1, negative = true
public boolean posNeg(int a, int b, boolean negative) {
if(!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0){
return true;
}else if(negative && a <= 0 && b <= 0){
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
在:
!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0
Run Code Online (Sandbox Code Playgroud)
的更高的优先级&&
比||
意味着它是一样的:
(!negative && a <= 0 && b >= 0) || (a >= 0 && b <= 0)
Run Code Online (Sandbox Code Playgroud)
在有条件或运营商(||
)如果任一操作数为真将返回true:
!negative && a <= 0 && b >= 0
是假的,因为negative
是假的(原样b >= 0
,但没有评估);a >= 0 && b <= 0
是真的因此表达式是true
,所以if语句被执行,这意味着true
返回.