我盯着下面的表達式,別人寫的:這個if語句的運算符優先級是什麼?
if (variableA == CaseA && GetCase(variableB) == CaseA && GetCase(variableC) == CaseA && !CaseB(variableB) || variableA != CaseA)
{
// do stuff
}
什麼是真的絆倒了我是該位:
!CaseB(variableB) || variableA != CaseA
,因爲沒有任何括號組條件一起。
C++編譯器如何評估這些if語句?如果AND運算符中的一個計算結果爲false,這是否意味着由於短路而不會檢查OR?
編輯
哇,我猜仇敵真的想今天去恨,考慮downvotes的量,除了-4每個答案(和計數?)的問題。而且,呃,爲什麼沒有真正的解釋?大聲笑。
保持優雅,人。保持優雅。 ;)
爲了記錄,簡單地說,有一個「從左到右的評估」在提供問題的有效答案方面並沒有真正說得太多。在發佈之前,我確實使用了Google的強大力量(這也導致我在這裏閱讀了幾篇文章)。
我承認我的錯誤在這裏沒有提到,雖然我認爲C++參考是最自然的鏈接來發布作爲答案的補充,但我得到的最好的信息是無意中從here,通過在源代碼示例以下報價:
|| has lower precedence than &&
這可以說是模糊的,因爲「低優先級」不是什麼,在這種情況下意味着方面還算規定。
無論哪種方式,對於那些真正爲你貢獻的人,你會收到一個贊成票 - 我會接受這個答案,它給了我真正想要的東西。
否定的優先方面,它就像'A * B * C * d + e'。 –