首頁 >後端開發 >C++ >C 和 C 中的參數評估順序是什麼?

C 和 C 中的參數評估順序是什麼?

Patricia Arquette
Patricia Arquette原創
2024-12-19 05:12:00347瀏覽

What is the Parameter Evaluation Order in C and C  ?

C 和C 中的參數求值順序

C 和C 中函數參數的求值順序是開發人員需要考慮的重要因素。 C99和C11標準都規定,評估順序沒有明確定義。這意味著編譯器可以自由地決定求值順序。

但是,請務必注意,參數表達式求值的所有副作用必須在 C 中呼叫函數之前生效。換句話說,對變數或其他狀態的任何修改都必須發生在函數體執行之前。

C 標準也規定後綴運算式和參數運算式清單的求值順序是未指定的。這意味著編譯器可以決定這些表達式的求值順序。

相反,C11 標準指定在函數指示符和實際參數的求值之後但在實際呼叫之前有一個序列點。這意味著實際參數的計算與被呼叫函數體的執行是分開的。

關於函數呼叫的實現,C 和 C 標準都沒有規定必須使用硬體堆疊。這是留給編譯器編寫者的實作細節。雖然許多架構確實透過硬體堆疊傳遞參數,但這並不普遍正確。

以上是C 和 C 中的參數評估順序是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn