下面是實驗代碼:用php 寫的,JavaScript應該也差不多:
我發現,php 和 JavaScript 差多了! 我附加 運行結果 和 代碼:
區別 | || or \& \& and
';echo '這裡是$p = 6 or 0'.'結果,是【';$p = 6 or 0;var_dump($p);//int(6)echo '】
';echo '這裡是$p = 6 | 0'.'結果,是【';$p = 6 | 0;var_dump($p);echo '】
';echo '這裡是$p = 6 || 0'.'結果,是【';$p = 6 || 0;var_dump($p);//bool(true)echo '】
';echo '
';echo '這裡是$p = 6 and 0'.'結果,是【';$p = 6 and 0;var_dump($p);echo '】
';echo '這裡是$p = 6 & 0'.'結果,是【';$p = 6 & 0;var_dump($p);echo '】
';echo '這裡是$p = 6 && 0'.'結果,是【';$p = 6 && 0;var_dump($p);echo '】
';
這個剛開始學就稀裡糊塗的,我搜了搜資料,也不明白,靠譜的結論是 = 優先順序 大於 | , &,
我還是不明白...
其實 | 和 & 好理解,就是|| 和 && 不理解,還望大牛解答..
回複內容:
下面是實驗代碼:用php 寫的,JavaScript應該也差不多:
我發現,php 和 JavaScript 差多了! 我附加 運行結果 和 代碼:
區別 | || or \& \& and
';echo '這裡是$p = 6 or 0'.'結果,是【';$p = 6 or 0;var_dump($p);//int(6)echo '】
';echo '這裡是$p = 6 | 0'.'結果,是【';$p = 6 | 0;var_dump($p);echo '】
';echo '這裡是$p = 6 || 0'.'結果,是【';$p = 6 || 0;var_dump($p);//bool(true)echo '】
';echo '
';echo '這裡是$p = 6 and 0'.'結果,是【';$p = 6 and 0;var_dump($p);echo '】
';echo '這裡是$p = 6 & 0'.'結果,是【';$p = 6 & 0;var_dump($p);echo '】
';echo '這裡是$p = 6 && 0'.'結果,是【';$p = 6 && 0;var_dump($p);echo '】
';
這個剛開始學就稀裡糊塗的,我搜了搜資料,也不明白,靠譜的結論是 = 優先順序 大於 | , &,
我還是不明白...
其實 | 和 & 好理解,就是|| 和 && 不理解,還望大牛解答..
題主修改題目,增加了js的內容,我也補充下js相關的答案:
js的位元運算(|
、&
)和php類似,不詳述。主要說明下邏輯運算的不同。
很多程式設計語言(包括js,但不包括php)基於效能考慮,對邏輯運算有個最佳化
對And運算 a = b && c
, a的值為:如果b邏輯上為真,返回c; 否則返回b
對Or運算 a = b || c
, a的值為: 如果b邏輯上為真,返回b; 否則返回c
給幾個例子
a = 1 && 2; // 1a = null && 2; // nulla = 'str' || 2; // 'str'a = undefined || 2; // 2
其實使用下面的例子可以更直觀表現
function c() { console.log('這裡不會調用');}a = null && c(); // a 為 null
因為&&
前面為假,所以直接返回null,後面的函數c()
不會被調用。
(原理我就不細說了,知道是效能最佳化就夠了。如果你是電腦專業出身,上理論課時候肯定講過,只不過當時可能沒認真聽。)
以下是針對PHP
的原答案
正好有時間,我就細說下。
首先 and
or
&&
||
都是邏輯運算子,功能完全相同,唯一區別只有優先順序: &&
||
> 賦值運算子(=
) > and
or
;
你的測試代碼裡有個不太明顯的坑。
因為優先順序:||
> =
> or
, 所以
$p = 6 or 0;
實際上的運算順序是
($p = 6) or 0; // $p 為 6
如果改成
$p = (6 or 0); // $p 為 true
就和使用||
一致了。
2、而 & | 是位元運算符,和上面的不是一種運算。
位元運算符是將數位每一位相應進行邏輯運算得出的結果,比如
$b = (10 | 12); // $b 為 14
10(二進位為1010
)和12(二進位1100
)位與運算,得到14(二進位1110
)
在JS中|| ,&& 用的蠻多的
位元運算的邏輯運算是不同的,希望再去看點書。|和&是位元運算,|| 和&&是邏輯運算
絕大部份語言都有&&和||符號吧,意義幾本都一樣,都是作為邏輯符,你這麼問,我都感覺你沒學過編程...