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

看板Soft_Job作者 (比菲)時間12年前 (2012/03/31 16:56), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串13/13 (看更多)
※ 引述《erspicu (.)》之銘言: : 有時候亂七八糟的書或是亂七八糟的講師 : 真的害死人... : 話說我有兩個寫Java的同事 : 都有一個很奇怪的觀念 : 這種巧合機率極低 但是卻發生了 : 讓我懷疑他們應該是看到同一本書或是上了同一講師的課誤導 : | vs || 的差異 : 底下是他們認為 : |是指 不管前條件為真或是偽 都會進行後條件的計算 : => true | false -> true : false | true -> false : ||是指 如果前條件為偽 則回傳為偽 跳出 不進行後條件計算 : 如果前條件為真 則進行後條件計算 : => false || true -> false : true || false -> false : true || true -> true : 以上是他們認為 : 我的媽...夠扯的 兩個人工作經驗都非常久 : 而且都擔任過知名公司的RD : 1. | 是bitwise的計算子 ,通常很少用在邏輯判斷用途上, : 把|用在邏輯判斷上也不是說不行,但是得在特定條件下才能使用, : 而且得小心使用,不熟悉語言和編譯器特性,容易發生發預期情況. : (話說也不一定是每種語言布林底層其實就是0.1數值,這樣做很危險) : 2. || 就是 或是的意思... 如果前為偽,一定會跳下去做後面的條件, : 如果前為真,有些語言或是編譯器會直接回傳真,而忽略後面條件計算, : 有些則都會做完,不太一定. : 重點是...也太扯了吧 (而且我同是好像根本不知道bitwise的意思) : 這種奇怪的觀念下,寫出來的系統沒爆掉也真的滿神的... : 到底是哪位講師或是哪本書的作者..槍斃算了 就我淺薄的C++知識學到的是 |、&為位元運算,也就是表示成二進位再每個bit做and or運算 在這種情況下左右兩邊當然要考慮,不然怎麼做and or運算勒@@? 而||、&&為邏輯運算子,||前為true後面忽略,&&前為false後面忽略 而如果要用(|、&)來代替(||、&&)而出錯的話有四種情形 在c++只吃int的情況下 1.(true | other) = false 2.(false | false) = true 3.(false & other) = true 由於2補數0的bit都是0所以應該不可能發生 4.(true & true) = false 這個重點來了 c++中,非0可表示true,0表示false 所以當 (2147483647&-2147483648)時會如何呢 答案是false 所以還是不要把這兩個亂用好= =" p.s.第一次發文,好緊張((抖抖 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.250.221

03/31 17:02, , 1F
呵,不過他們討論的是 java,直接看 jls 就知道了 :P
03/31 17:02, 1F

03/31 17:58, , 2F
是阿...有點太扯
03/31 17:58, 2F

03/31 18:55, , 3F
我沒學過JAVA,不知道這方面跟c++一不一樣,如果不一樣請忽
03/31 18:55, 3F

03/31 18:55, , 4F
我說的吧~~
03/31 18:55, 4F
文章代碼(AID): #1FTiR0Wo (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1FTiR0Wo (Soft_Job)