看板 Soft_Job 關於我們 聯絡資訊
: → atst2:我怎麼覺得你同事不是把| 和|| 搞錯,而是把|| 和&&搞反了? 03/28 22:38 : → atst2:話說回來,Java spec.有指明bitwise operator是有交換性的 03/28 22:40 : → atst2:但倒是沒有明確指出,當|的兩邊都是boolean時,能否套用 03/28 22:42 : → atst2:short-circuit evaluation... 03/28 22:43 : → erspicu:看編譯器 實作特性 這就by case了 03/28 22:44 : → yauhh:不要沒事就講看編譯器實作特性,一個語意沒那麼難定義. 03/28 23:26 : → yauhh:尤其是邏輯公設,幾乎不會是被扯到語言未定義這個部份. 03/28 23:27 : → qrtt1:spec 明明就寫了布林邏輯啊>"< bitwise 是整數的事. 03/28 23:32 : → qrtt1:如同樓上說的,根本沒必要看 compiler 實作 03/28 23:32 我覺得學習語言真的從稍微低階一點的學習 在某些方面會學習的比較多 Java比較高階 把很多東西包起來 有些細節部分 有些人根本不知道所以然來 這些人就是會覺得探討compiler 實作行為根本沒必要的人 當 | 兩邊都是boolean時 而且也只是要求取boolean結果時 能否套用short-circuit evaluation 就結果來說 答案是可以的 跟 || 一樣 因為並不影響結果 前提是 若前條件為 true(1) 可以省略後條件 反之 前條件為 true(0) 則還是得看後條件 但是看編譯器高興 基本上如果spec沒有特別指出實作細節規範 怎麼做看作的人高興 重點是結果不要錯就好 如果單以 boolean 來說就是這樣 但是boolean是特例 因為boolean在很多語言的底層 我猜可能通常是一個byte的0或是1 也許今天作者高興 想加速 直接在 兩個boolean的情況下 使用short-circuit evaluation 也未嘗不可 到底是誰見樹不見林? 或許吧...反正也很少人用Java去處理低階的事情 見樹不見林也無所謂 如果是內嵌系統領域的人 見樹不見林 大概就別混了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.5.247
yauhh:講了半天就是誰高興就是了? 03/29 00:09
erspicu:你如果有看過某些討論串 就不會覺得訝異了 03/29 00:10
lgd1008:Java是跨平台的語言, 其實在Java language spec. 裡, 雖然 03/29 00:18
lgd1008:你並不會看到short-cut這個關鍵字, 但卻己經指明對||的處 03/29 00:19
lgd1008:理, 使用short-cut evaluation, 否則連跨compiler都不行了 03/29 00:19
lgd1008: 如何跨平台呢? 你可以永遠當做它存在... 03/29 00:19
erspicu:上面的人是在 | 左右為boolean的情況 03/29 00:23
lgd1008:其實spec裡也有指明其運算, 其中未包含short-cut evaluati 03/29 00:36
lgd1008:不過我倒是今天才注意到這個用法... 03/29 00:36
zekewang:夭壽...這篇到底在說啥...完全看無... 03/29 00:47
lgd1008:整理一下, ||必有SCE, |必無SCE, SCE == short cut evalua 03/29 00:51
iceonly:結果第一個回你的人引用的教科書和你同事故說的一樣阿 03/29 09:16
iceonly:我翻到另外一本作者寫得(Kathy sierra),內容跟你同事說的 03/29 09:21
iceonly:thinking in java也提到一樣的東西 03/29 09:24
erspicu:這間中差異很大好不好... 完全是對與不對的事情 03/29 09:54
erspicu:大哥 #1FSmlb2C 這篇看一下吧 03/29 09:56
※ 編輯: erspicu 來自: 60.248.56.181 (03/29 10:44)
metalalive:我是絕得,原PO可以取決於跟這兩位資深前輩的關係好不好 03/29 13:13
metalalive:來決定要不要幫他們導回"正途" XD 03/29 13:13
metalalive:不然說實在的,一直批評人家這種基礎知識都不會,有點 03/29 13:15
metalalive:沒必要 03/29 13:15
lgd1008:其實應該只是一時口誤或腦誤, 例如想其它問題想到一半, 03/29 18:25
lgd1008:結果同事來問問題. 硬是從腦中搜索了一下答案回答. 不然 03/29 18:25
lgd1008: | 與 || 的差別能講對, 更基本的SCE反而卻講錯, 不太合理 03/29 18:26