回答
這是合法的,但可能不符合你的期望。它被視爲你寫如下:
if (((0 <= x) <= y) <= y+1)
(0 <= x)
評估爲0或1;將0或1與y
進行比較,產生另一個0或1的結果;這與y+1
進行比較,產生用於控制if
語句的最終0或1。
如果你的目標是要確保x
不小於零或大於y
大,而且也保證了y
不大於y+1
更大,那麼你會寫:
if (0 <= x && x <= y && y <= y+1)
我注意到, y <= y+1
通常是真的。如果y
是一個無符號類型並且等於該類型的最大值,則y+1
爲0.如果y
是一個有符號類型並且等於該類型的最大值,則通過給它添加1來調用未定義的行爲。如果幸運的話,y+1
將包裝爲簽名類型的最大負值,但不能依賴於該值(所以也許這會讓它「如果你不幸」,因爲該錯誤不一定會顯示出來在它導致重大問題之前)。
不是,儘管它是合法的C代碼,但是根本不可能做你想做的事。您必須使用& &或||。原因是你實際上看到,例如,y是大於還是等於布爾值,在C和C++中通常只是0和1.
從語法合法的意義上說它是「可能的」。不過,這可能不是想要的。 –
@jonathan:是的,我可以說更好....我會解決它。 – Linuxios
這是合法的(並且已定義; Google搜索字詞'operator precedence'),但我認爲它不會達到您期望的或意義上的效果。
這是完全合法的,但實際上沒用。您應該使用&&
和/或||
來建立正確的表達式。
- 1. c# - 條件運算符表達式(連續幾行)
- 2. C#空傳播運算符/條件訪問表達式&if blocks
- 3. JavaScript中有多個表達式的三元運算符?
- 4. 正則表達式的多個字符串用「或」運算符
- 5. 多個條件的邏輯運算符
- 6. 常量表達式中的條件運算符
- 7. 條件語句中運算符的正則表達式驗證
- 8. 沒有正則表達式運算符*
- 9. c#空條件運算符
- 10. C#條件運算符:?有可空INT
- 11. 正則表達式在Java中有多個條件來提取算術運算符
- 12. Python正則表達式:改變條件運算符
- 13. JavaScript條件表達式不使用關係運算符
- 14. 多個動態條件或運算符
- 15. 在JavaScript布爾表達式中的多個比較運算符
- 16. 正則表達式的多個條件
- 17. 正則表達式'|'運算符vs每個子表達式的單獨運行
- 18. 使用正則表達式或運算解決2個條件
- 19. 使用帶有4個表達式的三元運算符
- 20. 的Python的eval表達式算術運算符所有排列
- 21. 多條件下的CAML IN運算符和AND運算符
- 22. = vs ===布爾表達式的運算符
- 23. 的Javascript運算符表達式
- 24. 運算符的語法表達式
- 25. 像表達式樹中的運算符
- 26. 正則表達式具有多個條件的不同模式
- 27. ?:三元條件運算符行爲,當留下一個表達式爲空
- 28. 多個表達式IF條件
- 29. 正則表達式與多個條件
- 30. 目標C中的條件運算符
試試看看。 – chris
我強烈建議您使用圓括號來顯示您的意圖。您可能必須在某天修改代碼 – EvilTeach