-2
A
回答
3
是的,這是未定義的行爲。如果在語句中重複使用相同的變量,編譯器將不會對增量何時發生作出任何承諾。
+0
如果'C'具有內置類型,那麼這只是未定義的行爲。否則,它只是未指定的(並且具有有限的可能值集合 - 假設用戶定義'operator ++'是確定性的)。 –
4
這取決於C
類型,但在最好的(用戶定義 類型,其中++
是一個函數),這是未指定的 第二C
是否之前或 C.operator++
評價後進行評價。
當然,對於內置型,所述表達是不確定的 行爲,以及用於用戶定義類型,最後的結果將 也取決於用戶如何定義operator++
,以及所述 編譯器相關的順序的評估。
0
是的,這是UB。從C99,第6.5節
表達式是符和操作數,指定的值
除以後指定的 計算(對於函數調用(),& &的序列,|| ?:,和 逗號運營商),子表達式的評估順序和 順序副作用發生均爲未指定
因此,在執行後增量時,快遞C++ - C
中無法保證。
相關問題
- 1. 這是否會調用未定義的行爲?
- 2. 這是否會在C中調用未定義的行爲?
- 3. 表達式的行爲:已定義還是未定義?
- 4. 這是一個未定義的行爲?
- 5. 是這個未定義的行爲?
- 6. 這是一個未定義的行爲?
- 7. 這個C++代碼是否產生未定義的行爲?
- 8. 這個C代碼是否產生「未定義的行爲」?
- 9. 這個CRTP用例是否被認爲是未定義的行爲?
- 10. 這是const_cast未定義的行爲?
- 11. 這是未定義的行爲嗎?
- 12. 這個C++ 11 lambda代碼調用未定義的行爲嗎?
- 13. 這個C++表達式是如何解釋爲一個調用?
- 14. 表達式springMacroRequestContext未定義
- 15. 如何使這個表達式否定
- 16. 這兩個表達式是否相等
- 17. 表達式'&(* some_vector.end())`是否定義良好?
- 18. 在JavaScript中,空的正則表達式模式是否定義了行爲?
- 19. 結果表達式[未定義]的「this.myMethod」不是一個函數
- 20. PowerShell的執行調用,表達式調用不是爲了
- 21. 下面的表達式的行爲是否被很好地定義?
- 22. 這個C繼承實現是否包含未定義的行爲?
- 23. 這個lambda是否可以重寫爲查詢表達式
- 24. 這是一個正常的Java正則表達式行爲嗎?
- 25. 我對這些XPath表達式的含義是否正確?
- 26. 這個正則表達式的含義
- 27. 這兩個jQuery表達式的含義?
- 28. 這個CRON表達式的含義
- 29. 這是一個立即調用的函數表達式嗎?
- 30. 是否在同一個表達式中調用了一個具有局部副作用的函數未定義的行爲?
這不僅是未定義的,而且還未指定的行爲,因爲未指定子表達式的評估順序。 –