-1
A
回答
4
你所經歷的是Undefined behavior。請閱讀有關順序點。逗號是函數調用中的分隔符,不是操作符。
一個序列點是一個時間點,在這個時間點,塵埃已經沉澱,並且迄今爲止看到的所有副作用都保證完成。在C標準中列出的序列的要點是:
在一個完整表達式(全 表達式是一個表達式語句,或任何其他表達這 不是任何更大的表達式內的子表達式的評估的端部); at ||,& &,?:和逗號運算符;和 在一個函數調用(在評估所有參數之後,並且在實際調用之前)。
標準指出
之前和下一序列點之間的對象應具有由表達式的評估修飾的至多一次其 存儲的值。 此外,只有在訪問先前值時才能確定要存儲的值。
相關問題
- 1. 無法理解!!的輸出!在Linux中
- 2. 無法理解Javascript輸出
- 3. 無法理解輸出
- 4. 無法理解python輸出
- 5. 無法理解Malloc輸出
- 6. 無輸出...無法理解錯誤
- 7. 無法理解numpy的argpartition輸出
- 8. 無法理解輸出的原因
- 9. 無法理解程序的輸出
- 10. 無法理解C的輸出progaram
- 11. 無法理解çprogaram的輸出
- 12. 無法理解和使用Statsmodels的SARIMAX`conf_int()`輸出
- 13. 無法理解count.multiple和IGRAPH
- 14. 無法理解ps | wc輸出差異
- 15. 無法理解函數輸出(C)
- 16. 遞歸,無法理解輸出
- 17. Valgrind - 無法理解錯誤輸出
- 18. 無法理解輸出方案
- 19. 無法理解Android應用中的日誌輸出
- 20. 無法理解在Python中輸出的原因
- 21. 使用leave語句無法理解輸出
- 22. 在列表理解中無法理解
- 23. 無法理解CUSP中CSR表示的輸出
- 24. 變種,循環在javascript,無法理解的輸出,錯誤
- 25. 無法解密輸出
- 26. 如何在Python中理解i&-i?在Python中的位操作
- 27. foreach無法在foreach中使用`i`(i = 1:N)
- 28. 在算法分析中如何理解for(int i = 5; i <= 2 * n; i ++)?
- 29. 無法使用寫輸出
- 30. i = i ++ + ++ c的輸出差異;和i = ++ i + C++;
一個函數在其參數被評估之前不能被調用,可以嗎? –
@ R.MartinhoFernandes:不,但是在應用其參數表達式的副作用之前,其參數的值可以設置爲石頭,因爲唯一的序列點在*評估之後是*,而在*函數調用之前。因此,對於這個代碼,'3 3','3 4','4 3'和'4 4'都是模糊的輸出,儘管它有未定義的行爲,所以任何事情都是允許的。 –