[閒聊] 真的有扯到...

看板Soft_Job (軟體人)作者 (.)時間14年前 (2012/03/28 19:52), 編輯推噓16(16018)
留言34則, 19人參與, 最新討論串1/13 (看更多)
有時候亂七八糟的書或是亂七八糟的講師 真的害死人... 話說我有兩個寫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)

03/28 19:55, , 1F
||是指 如果前條件為偽 則回傳為偽 跳出 不進行後條件計算
03/28 19:55, 1F

03/28 19:55, , 2F
2. || 就是 如果前為偽,一定會跳下去做後面的條件
03/28 19:55, 2F

03/28 19:55, , 3F
你怎麼前後寫的不一樣
03/28 19:55, 3F
一個是他們認為 一個是我後面的補充 話說這種問題一翻兩瞪眼 寫個程式跑看看就知道了 結果我同事看到程式結果的反應 出乎預料 用了台語說 怎麼會這樣.... 我也想說怎麼會這樣 這麼扯的觀念誰教的阿 ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 19:58) ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 20:00)

03/28 20:01, , 4F
他們認為的那部份....他們自己不覺得很困惑嗎...
03/28 20:01, 4F

03/28 20:03, , 5F
而且 bitwise放在條件式, 編譯器會靠北吧
03/28 20:03, 5F

03/28 20:04, , 6F
有些語言有些編譯器是可以阿...但是真的不建議
03/28 20:04, 6F

03/28 20:31, , 7F
||是logical OR,然後編譯器會做Short-circuit evaluation
03/28 20:31, 7F

03/28 20:32, , 8F
所以如果前面的運算式出來是 false 的話就會直接跳出......
03/28 20:32, 8F

03/28 20:33, , 9F
如果習慣用的語言沒有Short-circuit evaluation,可能就不
03/28 20:33, 9F

03/28 20:33, , 10F
知道會有這種現象吧,除非自己有 try 過
03/28 20:33, 10F

03/28 20:45, , 11F
問題就是 實際寫程式範例證明了阿
03/28 20:45, 11F
System.out.println (false||true); 印出結果就是true ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 20:48)

03/28 20:47, , 12F
那是位元運算.... = =
03/28 20:47, 12F

03/28 20:50, , 13F
而且.... | 跟 || 在一般狀況下,不會影響判斷結果吧?
03/28 20:50, 13F

03/28 20:51, , 14F
不管是 false|true 或是 false||true 判斷出來的結果應該會
03/28 20:51, 14F

03/28 20:51, , 15F
一樣吧?
03/28 20:51, 15F
本來就一樣阿 有什麼疑問嗎? 我同事就是認為 false||true -> false false|true -> true orz.. ※ 編輯: erspicu 來自: 219.70.5.247 (03/28 20:53)

03/28 20:54, , 16F
靠.... 這也太扯 = =
03/28 20:54, 16F

03/28 21:03, , 17F
槍斃算了XDDDDDDDDDDDDD
03/28 21:03, 17F

03/28 21:25, , 18F
這個好像叫做...短路運算
03/28 21:25, 18F

03/28 21:27, , 19F
現在才發現我推錯 orz 是 true 不是 false
03/28 21:27, 19F

03/28 22:01, , 20F
老實講很多人,真的用不到 & 或 |
03/28 22:01, 20F

03/28 22:21, , 21F
碰ic才用得到吧
03/28 22:21, 21F

03/28 22:50, , 22F
這國中數學有教的東西 怎麼還有人不會?太誇張了吧!
03/28 22:50, 22F

03/28 23:50, , 23F
也許你同事是高手,重載運算子,自己用起來爽
03/28 23:50, 23F

03/29 00:01, , 24F
沒作過 embedded 所以不知道 bitwise 吧...
03/29 00:01, 24F

03/29 00:35, , 25F
高手應該回答:應情況而異才對。不同地方 | 真的有不同用途
03/29 00:35, 25F

03/29 02:25, , 26F
我覺得是不常用沒想清楚吧 寫高階很少用到| 幾乎都是||
03/29 02:25, 26F

03/29 11:04, , 27F
寫高階也不會少用吧,先不要說自定義的flag/mask,光是
03/29 11:04, 27F

03/29 11:04, , 28F
一些標準函式例如open就有用到|啊...
03/29 11:04, 28F

03/29 12:59, , 29F
國中數學?我記得我那年代的國中根本沒教到true、false...
03/29 12:59, 29F

03/30 13:31, , 30F
|比較少自己弄 也可以用在條件判斷 就0.1.2.4.8.. 用加的
03/30 13:31, 30F

03/30 22:46, , 31F
Java好久沒碰了,但「or」不是兩個都false才會傳false?
03/30 22:46, 31F

03/31 21:08, , 32F
這我國小已經交過了
03/31 21:08, 32F

03/31 22:17, , 33F
請問樓上幾年次?唸哪間國小?我小六才剛看到et3...
03/31 22:17, 33F

04/01 09:49, , 34F
你的同事沒有錯 是你自己誤導自己
04/01 09:49, 34F
文章代碼(AID): #1FSljfod (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1FSljfod (Soft_Job)