||、&& 都是短路運算子
短路與 &&
運算方法:
只要「&&」前面是false,無論「&&」後面是true還是false,結果都將返「&&」前面的值;
$g = false&& true; // $g 被賦值為 (false && true),結果為 true
只要「&&」前面是true,無論「&&」後面是true還是false,結果都將返「&&」後面的值;
$g = true && false; // $g 被賦值為 (true && false),結果為 false
總結:假前真後
短路或 ||
運算方法:
只要「||」前面為false,不管「||」後面是true還是false,都返回「||」後面的值。
$g = false || true; // $g 被賦值為 (false || true),結果為 true
只要「||」前面為true,不管「||」後面是true還是false,都返回「||」前面的值。
$g = true || false; // $g 被賦值為 (false || true),結果為 true
總結:真前假後
拓展 and 和 or(主要還是看運算子的優先順序)
<?php
// 下面的 foo() 不會被呼叫,因為它們被運算子「短路」了。
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// "||" 的優先順序比 "or" 高
$e = false || true; // $e 被賦值為 (false || true),結果為 true
$f = false or true; // $f 被賦值為 false [altair注:"=" 的優先順序比 "or" 高]
var_dump($e, $f);
// "&&" 的優先順序比 "and" 高
$g = true && false; // $g 被賦值為 (true && false),結果為 false
$h = true and false; // $h 被賦值為 true [altair注:"=" 的優先順序比 "and" 高]
var_dump($g, $h);
?>
上例的輸出類似於:
bool(true)
bool(false)
bool(false)
bool(true)
java中短路與 邏輯與 短路或 邏輯或
created by cxh on 17 07 21.幾個名詞的定義和它們之間的區別 短路與 eg 條件1 條件2 執行過程 如果條件1成立,則繼續計算條件2 如果條件1不成立,則條件2不再計算,直接返回false.邏輯與 eg 條件1 條件2 執行過程 如果條件1成立,條件2繼續計算 如果條件1不...
C 短路求值(邏輯與 邏輯或)
首先看如下 include using namespace std intmain 執行結果 a 1 a 1 邏輯或的表現形式如下 expression1 exexpression2 這裡用到了邏輯或,由於邏輯或的短路,expression1為true,則後面的expression2 即 a 0 不...
C 短路求值(邏輯與 邏輯或)
首先看如下 include using namespace std intmain 執行結果 a 1 a 1 邏輯或的表現形式如下 expression1 exexpression2 這裡用到了邏輯或,由於邏輯或的短路,expression1為true,則後面的expression2 即 a 0 不...