不好意思想請問一下各位大大
兩個function,a(),b(),回傳bool
X=a(),Y=b()
這樣 if(X||Y)以及if(a()||b())兩種寫法在執行上會有什麼差異呢?
這部分用到的觀念是什麼或是該搜尋什麼關鍵字
小弟新手入門對一些細節不太熟悉,還請各位幫忙解惑,謝謝大家!
作者:
chuegou (chuegou)
2020-12-15 02:42:00我好像知道你要問啥第二種寫法 b()在a()為true時不會執行 這個嗎?
第二種寫法 a() 如果是 true 就直接判定 true不會再去執行 b() 看 b() 是 true 還是 false關鍵字是 order of evaluation
作者:
LPH66 (-6.2598534e+18f)
2020-12-15 02:50:00不對, 正確的關鍵字是 short-circuit evaluation雖然是誰先誰後的問題沒錯, 但關鍵是因為前件已經肯定結果所以直接"短路"跳掉後件的求值
對 short-circuit 的部份弄清楚就知道了。
作者:
CoNsTaR ((const *))
2020-12-15 06:40:00b 要有 side effect 執行結果才會有差吧否則只是效能問題?
作者:
dces4212 (flawless)
2020-12-15 22:48:00差別在b()是否執行這種問題建議直接翻規格書 有權威 不怕錯C99 6.5.14有說明只要有一個expression為true即不繼續往右evaulate其他expression
作者:
kingofsdtw (ä¸èƒ½é–’下來!!)
2020-12-22 22:05:00非x86玩玩看,這樣寫會死人
這還有一個別名叫sudden death, 比較少見 XD
作者:
Gway (我愛的你 也愛我 好嗎?)
2020-12-31 08:17:00差在fun call 代價 其他的版友說的很齊了