作者LaPass (LaPass)
看板Web_Design
標題Re: [問題] && 和 || 有什麼差別?
時間Thu Sep 26 18:44:56 2013
※ 引述《Kuea (奇亞)》之銘言:
: 想請教 && 和 || 有什麼差別呢?
: 假設 x=6 y=3
: && and (x < 10 && y > 1) is true
: || or (x==5 || y==5) is false
: 這個 && = 和
: || = 或
: 我看不出來有什麼明顯的差別
: 就是它的前後的算式都是判定正確的,結果就會是true?
: 或者是其中一個對就好了呢?
: 請多指點,感津~ ^○^
舉個有趣的例子來講一下搞錯這兩個東西有多可怕
假設你是程式設計師,正在寫氫彈的引爆條件
引爆條件是這樣的:
條件一. 炸彈在敵軍領空 (gps定位)
條件二. 被空投 (加速度計判定為自由落體)
條件三. 進行自我電路檢查後,一切運作正常
條件四. 引爆開關被按下 (就是,電影中常常出現的紅色按鈕)
那,你程式可以這樣寫
if(條件一||條件二||條件三||條件四) 引爆;
if(條件一&&條件二&&條件三&&條件四) 引爆;
剛寫好的時候,一切沒問題
當程式安裝到炸彈上的時候也沒問題
甚至,這顆炸彈還會放在倉庫裡好幾年,相安無事
因為兩個判斷式得到的答案都是 false
所以炸彈不會爆炸
但是,開始打仗,軍方準備用炸彈的時候,就會出狀況了
舉例來說.....
當炸彈還在倉庫裡,進行電路檢查的時候....
條件一. 炸彈在敵軍領空 (gps定位)
條件二. 被空投 (加速度計判定為自由落體)
條件三. 進行自我電路檢查後,一切運作正常
條件四. 引爆開關被按下 (就是,電影中常常出現的紅色按鈕)
if(
條件一||條件二||條件三||條件四) 引爆;
if(
條件一&&條件二&&條件三&&條件四) 引爆;
嗯,第一個是false,兩邊都是,所以繼續下一步
if(條件一||
條件二||條件三||條件四) 引爆;
if(條件一&&條件二&&條件三&&條件四) 引爆;
↑這個判斷式停掉了,因為用&&時,只要有一個false就不會執行
條件二 false
if(條件一||條件二||
條件三||條件四)
引爆;
條件三 true.....
用 || 時,只要有一個條件成立,就會進行之後的動作
所以,當電路檢查沒問題的時候.....
這顆氫彈就會把我方的一個城市給炸掉了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.71.66
推 s25g5d4:(抖) 09/26 18:52
推 hit1205:XDDDDDDDDDDDDDDDDDDDDDDDDD 09/26 19:09
→ lyforever:寫程式的時候 其實還要考慮 左結合 或右結合... 09/26 21:17
推 sing10407:XD 09/26 21:55
→ danny8376:XDDDDDDDDDDDD 話說這其實... 沒發射直接引爆 09/26 22:40
→ danny8376:根本不能用吧 就是全&&也是原地引爆www 09/26 22:40
→ danny8376:阿 不對 看錯了XDD 不過這程式一點也不有趣啦www 09/26 22:41
推 JYHuang:BooooooOoooOOOooooooooooooM~~ 09/27 09:28
推 Kuea:這篇寫的太好了 !!!!超生動逼真易懂的比喻 XDDD 謝謝!! 09/27 11:10
→ cowbaying:這種情況用巢狀來寫 就很安全了... 09/30 17:38