2013-08-21 66 views
1

我有一些代碼循環遍歷一組值並用每個值調用一個函數。複合賦值運算符可以短路

喜歡耶...

for (int i=0; i<limit; i++) {booleanReturn |= doFunc(i);} 

只是好奇,沒有一個編譯器,將短路那|(?不執行doFunc(我),因爲booleanReturn已經是TRUE)=右

我猜測,因爲這是一個按位運算符短路操作不是一個定義的行爲,但我希望得到一些驗證。

+6

否使用按位運算符時不會出現短路,而不是任何想要遵循規範的編譯器。短路僅適用於邏輯運算符。 –

回答

3

運算符|=operator |而不是operator ||的化合物。前者不會短路。並且不存在運營商||=。所以你的問題的答案是否定的。 func必須調用如果它有副作用。如果它沒有副作用,那麼根據(如果規則),只要您無法區分差異,該實現就可以自由地執行任何操作。