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

看板Soft_Job作者 (喲)時間12年前 (2012/03/28 20:48), 編輯推噓1(1030)
留言31則, 4人參與, 最新討論串3/13 (看更多)
※ 引述《erspicu (.)》之銘言: : |是指 不管前條件為真或是偽 都會進行後條件的計算 : => true | false -> true : false | true -> false : ||是指 如果前條件為偽 則回傳為偽 跳出 不進行後條件計算 : 如果前條件為真 則進行後條件計算 : => false || true -> false : true || false -> false : true || true -> true : 以上是他們認為 : 我的媽...夠扯的 兩個人工作經驗都非常久 : 而且都擔任過知名公司的RD : 1. | 是bitwise的計算子 ,通常很少用在邏輯判斷用途上, : 把|用在邏輯判斷上也不是說不行,但是得在特定條件下才能使用, : 而且得小心使用,不熟悉語言和編譯器特性,容易發生發預期情況. : (話說也不一定是每種語言布林底層其實就是0.1數值,這樣做很危險) 我不了解Java,但不以這二種語法身為Java的運算子,也不以是哪一種Java的執行器 來看,而純粹以這個符號的意思來講: 如你所講, | 是 bitwise or. Bitwise or 什麼意思? 就是要把二個數用二進位 位元的處理方式求值. 如果這時候short-circuit evaluation進來,意思反而亂了. 意思會變成在某些時候,你弄個 A | B, A B 都是其他比較複雜的expression, short-circuit evaluation的觀念會讓你認為 B 不會參與這個 bitwise or 運算, 而是直接被忽略掉. 可是這是二進位數計算ㄋㄟ,是你說忽略就忽略嗎? 我覺得不是他們不知道 bitwise or, 應該是知前也知後. 反而有可能是你見樹不見林唷. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.108.204

03/28 20:50, , 1F
請搞清楚 || 跟 && 的差異
03/28 20:50, 1F

03/28 20:51, , 2F
如果 || 前為真的 是可以省略後算 但是
03/28 20:51, 2F

03/28 20:52, , 3F
前為偽 直接回傳為偽 那根本沒邏輯可言
03/28 20:52, 3F

03/28 20:53, , 4F
錯,short-circuit evaluation本來就是有邏輯的.
03/28 20:53, 4F

03/28 20:55, , 5F
||就是或者的意思 意思是任一為真 則為真
03/28 20:55, 5F

03/28 20:55, , 6F
如果要說邏輯值,看一個邏輯算符,我們本來就只關心整個結果,
03/28 20:55, 6F

03/28 20:56, , 7F
而不是後者有沒有算得到.
03/28 20:56, 7F

03/28 20:56, , 8F
不管前面是真假 只要前後有一為真 就為真
03/28 20:56, 8F

03/28 20:56, , 9F
short-circuit 的 && 是跳false || 是跳 true
03/28 20:56, 9F

03/28 20:56, , 10F
並不是你說的那樣
03/28 20:56, 10F

03/28 20:57, , 11F
如果 || 前面為偽 回傳為偽 忽略後面的話 根本就錯了
03/28 20:57, 11F

03/28 20:57, , 12F
當然資深RD他們說false | true -> false這麼扯的東西,
03/28 20:57, 12F

03/28 20:58, , 13F
你只要給她一小段碼,甩甩巴掌就好了,犯不著扯開大話題
03/28 20:58, 13F

03/28 20:59, , 14F
為什麼||前面false,忽略後面,就錯?
03/28 20:59, 14F

03/28 21:01, , 15F
喔,上句我講錯,||前面是true,&&前面是false,就可以忽略後面
03/28 21:01, 15F

03/28 21:02, , 16F
樓上 開竅了阿 發現問題了阿
03/28 21:02, 16F

03/28 21:08, , 17F
不是啊,我|| &&理解本來就沒錯啊
03/28 21:08, 17F

03/28 21:09, , 18F
但不管 || && | &,後面有忽略沒忽略,以邏輯運算來講並不重要
03/28 21:09, 18F

03/28 21:10, , 19F
但我講的是,以位元運算來講,如果 | 忽略後面,你就倒楣了.
03/28 21:10, 19F

03/28 21:12, , 20F
邏輯運算 有忽略沒忽略還是很重要 只是有些情況下
03/28 21:12, 20F

03/28 21:12, , 21F
忽略後算並不影響到結果而已 但是並不是任何情況都可忽略
03/28 21:12, 21F

03/28 21:14, , 22F
邏輯運算怎麼會說有忽略沒忽略很重要呢?
03/28 21:14, 22F

03/28 21:14, , 23F
可以忽略的部份,我沒忽略,會死嗎? 不會嘛!什麼叫作邏輯運算.
03/28 21:14, 23F

03/28 21:15, , 24F
||的狀況下 如果前者為偽 你直接回傳偽不做後算看看
03/28 21:15, 24F

03/28 21:16, , 25F
||的狀況前者為false,所以後者不可以忽略,而且我也沒忽略.
03/28 21:16, 25F

03/28 21:16, , 26F
沒錯啊!
03/28 21:16, 26F

03/28 21:17, , 27F
那你還說忽略或是不忽略不重要?
03/28 21:17, 27F

03/28 21:18, , 28F
我說的是,可以忽略的,不管我忽略不忽略都沒關係. 不要跳針.
03/28 21:18, 28F

03/28 21:19, , 29F
而且short-circuit eval可沒有把不可忽略的忽略掉,你懂吧?
03/28 21:19, 29F

03/29 02:28, , 30F
好的程式應該有無SCE結果應該一樣 我唯一看過結果會不一樣
03/29 02:28, 30F

03/29 02:28, , 31F
是考試題目 在後面做assign
03/29 02:28, 31F
文章代碼(AID): #1FSmYaqX (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1FSmYaqX (Soft_Job)