Re: [閒聊] 真的有扯到...
※ 引述《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
03/31 17:02, 1F
→
03/31 17:58, , 2F
03/31 17:58, 2F
→
03/31 18:55, , 3F
03/31 18:55, 3F
→
03/31 18:55, , 4F
03/31 18:55, 4F
討論串 (同標題文章)