看板 Soft_Job 關於我們 聯絡資訊
有時候亂七八糟的書或是亂七八糟的講師 真的害死人... 話說我有兩個寫Java的同事 都有一個很奇怪的觀念 這種巧合機率極低 但是卻發生了 讓我懷疑他們應該是看到同一本書或是上了同一講師的課誤導 | vs || 的差異 底下是他們認為 |是指 不管前條件為真或是偽 都會進行後條件的計算 => true | false -> true false | true -> false ||是指 如果前條件為偽 則回傳為偽 跳出 不進行後條件計算 如果前條件為真 則進行後條件計算 => false || true -> false true || false -> false true || true -> true 以上是他們認為 我的媽...夠扯的 兩個人工作經驗都非常久 而且都擔任過知名公司的RD 1. | 是bitwise的計算子 ,通常很少用在邏輯判斷用途上, 把|用在邏輯判斷上也不是說不行,但是得在特定條件下才能使用, 而且得小心使用,不熟悉語言和編譯器特性,容易發生發預期情況. (話說也不一定是每種語言布林底層其實就是0.1數值,這樣做很危險) 2. || 就是 或是的意思... 如果前為偽,一定會跳下去做後面的條件, 如果前為真,有些語言或是編譯器會直接回傳真,而忽略後面條件計算, 有些則都會做完,不太一定. 重點是...也太扯了吧 (而且我同是好像根本不知道bitwise的意思) 這種奇怪的觀念下,寫出來的系統沒爆掉也真的滿神的... 到底是哪位講師或是哪本書的作者..槍斃算了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.5.247 ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 19:55)
ken1325:||是指 如果前條件為偽 則回傳為偽 跳出 不進行後條件計算 03/28 19:55
ken1325:2. || 就是 如果前為偽,一定會跳下去做後面的條件 03/28 19:55
ken1325:你怎麼前後寫的不一樣 03/28 19:55
一個是他們認為 一個是我後面的補充 話說這種問題一翻兩瞪眼 寫個程式跑看看就知道了 結果我同事看到程式結果的反應 出乎預料 用了台語說 怎麼會這樣.... 我也想說怎麼會這樣 這麼扯的觀念誰教的阿 ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 19:58) ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 20:00)
northsoft:他們認為的那部份....他們自己不覺得很困惑嗎... 03/28 20:01
northsoft:而且 bitwise放在條件式, 編譯器會靠北吧 03/28 20:03
erspicu:有些語言有些編譯器是可以阿...但是真的不建議 03/28 20:04
dSnAil:||是logical OR,然後編譯器會做Short-circuit evaluation 03/28 20:31
dSnAil:所以如果前面的運算式出來是 false 的話就會直接跳出...... 03/28 20:32
dSnAil:如果習慣用的語言沒有Short-circuit evaluation,可能就不 03/28 20:33
dSnAil:知道會有這種現象吧,除非自己有 try 過 03/28 20:33
erspicu:問題就是 實際寫程式範例證明了阿 03/28 20:45
System.out.println (false||true); 印出結果就是true ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 20:48)
LaPass:那是位元運算.... = = 03/28 20:47
LaPass:而且.... | 跟 || 在一般狀況下,不會影響判斷結果吧? 03/28 20:50
LaPass:不管是 false|true 或是 false||true 判斷出來的結果應該會 03/28 20:51
LaPass:一樣吧? 03/28 20:51
本來就一樣阿 有什麼疑問嗎? 我同事就是認為 false||true -> false false|true -> true orz.. ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 20:53)
LaPass:靠.... 這也太扯 = = 03/28 20:54
EJB:槍斃算了XDDDDDDDDDDDDD 03/28 21:03
codemonkey:這個好像叫做...短路運算 03/28 21:25
dSnAil:現在才發現我推錯 orz 是 true 不是 false 03/28 21:27
kunchung:老實講很多人,真的用不到 & 或 | 03/28 22:01
fatb:碰ic才用得到吧 03/28 22:21
viable:這國中數學有教的東西 怎麼還有人不會?太誇張了吧! 03/28 22:50
northsoft:也許你同事是高手,重載運算子,自己用起來爽 03/28 23:50
popoblue:沒作過 embedded 所以不知道 bitwise 吧... 03/29 00:01
howshou:高手應該回答:應情況而異才對。不同地方 | 真的有不同用途 03/29 00:35
KiroKu:我覺得是不常用沒想清楚吧 寫高階很少用到| 幾乎都是|| 03/29 02:25
shadow0326:寫高階也不會少用吧,先不要說自定義的flag/mask,光是 03/29 11:04
shadow0326:一些標準函式例如open就有用到|啊... 03/29 11:04
andymai:國中數學?我記得我那年代的國中根本沒教到true、false... 03/29 12:59
klit5566:|比較少自己弄 也可以用在條件判斷 就0.1.2.4.8.. 用加的 03/30 13:31
a1e:Java好久沒碰了,但「or」不是兩個都false才會傳false? 03/30 22:46
globekjller:這我國小已經交過了 03/31 21:08
andymai:請問樓上幾年次?唸哪間國小?我小六才剛看到et3... 03/31 22:17
feeya:你的同事沒有錯 是你自己誤導自己 04/01 09:49