動作の理解を容易にするためにここにあるため、状態を見ないでください。
結果が true に等しいのはなぜですか?
boolean result = false && (false)?false:true;
次のようにして問題を解決できることはわかっています。
boolean result = false && (false?false:true);
しかし、なぜ最初の構文が正しくないのか疑問に思っています。「?」のように見えます。演算子は「&&」よりも優先されます
動作の理解を容易にするためにここにあるため、状態を見ないでください。
結果が true に等しいのはなぜですか?
boolean result = false && (false)?false:true;
次のようにして問題を解決できることはわかっています。
boolean result = false && (false?false:true);
しかし、なぜ最初の構文が正しくないのか疑問に思っています。「?」のように見えます。演算子は「&&」よりも優先されます
三項条件( ?:
) は よりも優先順位が低くなります&&
。そう
boolean result = false && (false)?false:true;
(不要な括弧がある); と同等です
boolean result = (false && false) ? false : true;
以来 (なのでfalse && false
ですfalse
)、これはに還元されます
boolean result = false ? false : true;
もちろん、これはですtrue
。
説明 :- 2 つの式を比較し、両方が true と評価された場合にのみ true を返します。一方または両方が false と評価された場合、false を返します。
次のリストは、考えられるすべての組み合わせを示しています。
true && false = false // Evaluates false because the second is false
false && true = false // Evaluates false because the first is false
true && true = true // Evaluates true because both are true
false && false = false// Evaluates false because both are false
構文
式 1 && 式 2
説明 :- 2 つの式を比較し、一方または両方が true と評価された場合に true を返します。両方の式が false の場合にのみ false を返します。
次のリストは、考えられるすべての組み合わせを示しています。
true || false = true // Evaluates true because the first is true
false || true = true // Evaluates true because the second is true
true || true = true // Evaluates true because both are true
false || false = false // Evaluates false because both are false
構文
式1 || 式2
false && (false)
に評価されるfalse
ため、三項演算子の最後の値が返されますtrue
。
それは単なるブール代数です。
False && false = true
false && true = false
true && true = true
true && false = false
したがって、最初のケースでは、次のように記述します。
if (false && false){
result = false
} else {
result = true
}
2番目のケースでは、次のように書きます:
result = false && (false == false);
false == false は true を返します。したがって、 false && true は false を返します