精華區beta b98902HW 關於我們 聯絡資訊
and(&&) 與 or(||)運算子的判斷順序與判斷與否 之前看到一些同學在&&||上 有發生一些因為擺放順序而發生的記憶體使用錯誤 就上來發這篇 先談談運算結果 他的運算結果會是 A|B|A && B|A || B ------------------ 0|0| 0 | 0 0|1| 0 | 1 1|0| 0 | 1 1|1| 1 | 1 但是在實際運作上,有一件需要注意的事情, 因為&&與||的計算順序是由左到右 所以A&&B時,電腦會先判斷A 如果A是0,電腦會直接輸出0,而不去對B做判斷 而A||B的話 如果A是1,電腦也會直接輸出1,而不去對B做判斷 以這次作業來說, 有一些同學寫 if(x>=0 && x<n && y>=0 && y<n && map[x][y]){ ... } 會通過測試, 但是一些同學寫 if(map[x][y] && x>=0 && x<n && y>=0 && y<n){ ... } 就使用錯誤的記憶體了。 注意到了嗎? 如果x跟y是不合法的x,y 雖然判斷是裡面map[x][y]會超出陣列 第一種寫法因為前面就會有出現0的情況 所以不會去找map[x][y] 但是第二種寫法因為&&會從左到右判斷 所以第一個判斷就是map[x][y],於是就有可能超出你設定的範圍了 寫的時候要稍微注意一下順序 不過,最保險的方法是分開寫就是了 先判斷合不合法,再判斷裡面的東西 最後補個八卦 &&的運算比||優先 所以在一串&&跟||的判斷式裡面,會先算&&喔 不過不過,保險一點還是用個括號比較保險XD -- Google 時の音の精靈| ████████▕検索検索オプション | 表示設定 ▇▇  ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ 搜尋: ⊙ウェブ全体から検索 ○日本語のページを検索 ○蘿莉検索 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.77.105
robertabcd:推~~ 10/13 00:03
hoaaoh: 謝謝姜姜強者的分析讓我獲益良多m(= =)m 10/13 00:05
lachu:姜神出手 不同凡響XD 10/13 00:07
rod13824:推推推 10/13 00:09
gene9216:真強者就是真強者!!!推 10/13 00:11
zxm20243:強者教學文大推! 10/13 00:44
jenny2921: 謝謝姜姜強者的分析讓我獲益良多m(_ _)m 10/13 00:47
SoranoKid:是姜神!! 10/13 00:51
sunjw:推! 好用心 10/13 01:30
iForests:受益匪淺!! 10/13 01:32
davll:推姜神!!m(_ _)m 10/13 01:52
crazy05:感謝姜姜真強者...原來我一直都可以少一層判斷式 10/13 02:37
sa072686: 謝謝姜姜強者的分析讓我獲益良多m(_ _)m 10/13 04:06
Natsutaka: 謝謝姜姜強者的分析讓我獲益良多m(_ _)m 10/13 04:27
erodora: 謝謝姜江紳士的分析讓我獲益良多m(_ _)m 10/13 08:19
cwahbong:所謂的短路評算(Short-circuit evaluation).... 10/13 08:25
s864372002: 謝謝糟糕姜姜的分析讓我獲益良多m(_ _)m 10/13 09:10