Re: [問題] 關於 | 與 || 和 & 與 && 的差別 ??

看板java作者 (Love.みけ)時間17年前 (2008/07/29 20:16), 編輯推噓5(500)
留言5則, 5人參與, 最新討論串3/3 (看更多)
※ 引述《takashi737 (小兔)》之銘言: : ※ 引述《yhn0tgb60 (呦厚厚)》之銘言: : : 如題 : : 也就是邏輯運算子跟位元運算子的差別 : : 好像用法上都一樣是嗎??? : : 謝謝了 : | 和 & 是邏輯運算元; || 和 && 是 前者的short-circuit : ex: : int a = 1, b =2; : (b > a) | (a < 0) --> true | false --> return true : 此運算會先運算(a < b),不論傳回 true 或 false 皆會執行下一組(a < 0) : --------------------------------------------------------------------- : (b > a) || (a < 0) : 也是會先運算(b > a),若傳回 true, 則不會執行下一組(a < 0) : (b < a) || (a < 0) : 會先運算(b < a), 若傳回 false,則會執行下一組(a < 0) : 參考猛虎考試書 剛剛做了點小實驗,結果無法判斷,只好再去找官網 實驗很簡單 int i1=(0|1); int i2=(true|false); int i3=(1|false); boolean b1=(0|1); boolean b2=(true|false); boolean b3=(1|false); 編譯的結果是i2和b1需要強制轉型、i3和b3則出現 operator | cannot be applied to int,boolean 的結果 官網的說明則有清楚的定義 http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html The bitwise & operator performs a bitwise AND operation. The bitwise ^ operator performs a bitwise exclusive OR operation. The bitwise | operator performs a bitwise inclusive OR operation. 而在 Equality, Relational, and Conditional Operatorsperation 頁面上 http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op2.htmltwise 則完全沒有提到&、|這兩個operator 當然官網說明不見得100%正確 不過這倒是讓我很好奇倒底書上的正確還是官網的正確了 以實驗結果而言,應是對|做了overloading(如同+一樣) 一開始我覺得書上所說的應該不正確,畢竟一個operator有兩種不太相同的意思, 感覺好像怪怪的,但回心一想+,也就釋然了 至於事實如何,我想到的驗證方式是將無最佳化的bytecode反組譯,看是怎麼做的 反組譯苦手,也許哪位大大有空可以代為解惑一下? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.217.238

07/29 20:25, , 1F
看不出有什麼問題?能解釋一下哪邊怪怪的嗎?
07/29 20:25, 1F

07/29 20:30, , 2F
& 不等同於 &&, | 不等同於 ||
07/29 20:30, 2F

07/29 20:49, , 3F
..........
07/29 20:49, 3F

07/29 20:50, , 4F
何苦拿 bitwise operator 操作 boolean 呢...?
07/29 20:50, 4F

07/29 22:24, , 5F
bit flag很好用..
07/29 22:24, 5F
文章代碼(AID): #18ZmeHAm (java)
文章代碼(AID): #18ZmeHAm (java)