共用方式為


C++ 序列點

運算式只能在連續「序列點」之間修改物件的值一次。

Microsoft 特定的

C++ 語言定義目前未指定序列點。 針對包含 C 運算子及未包含多載運算子的任何運算式,Microsoft C++ 使用與 ANSI C 相同的序列點。 當運算子經過多載時,其語意會從運算子序列變更為函式呼叫序列。 Microsoft C++ 使用下列序列點:

  • 邏輯 AND 運算子 (&&) 的左運算元。 繼續之前會完整評估邏輯 AND 運算子的左運算元,並且完成所有副作用。 不保證會評估邏輯 AND 運算子的右運算元。

  • 邏輯 OR 運算子 (||) 的左運算元。 繼續之前會完整評估邏輯 OR 運算子的左運算元,並且完成所有副作用。 不保證會評估邏輯 OR 運算子的右運算元。

  • 逗號運算子的左運算元。 繼續之前會完整評估逗號運算子的左運算元,並且完成所有副作用。 逗號運算子的兩個運算元會一律進行評估。

  • 函式呼叫運算子。 在進入函式之前會先評估函式呼叫運算式和函式的所有引數 (包括預設引數),並完成所有副作用。 其中並未指定引數或函式呼叫運算式之間的評估順序。

  • 條件運算子的第一個運算元。 繼續之前會完整評估條件運算子的第一運算元,並且完成所有副作用。

  • 完整初始化運算式的結尾,例如在宣告陳述式中初始化的結尾。

  • 運算陳述式中的運算式。 運算式陳述式包含選擇性運算式且後面加上分號 (;)。 會針對運算式的副作用進行完整的評估。

  • 選取範圍 (if 或 switch) 陳述式中的控制運算式。 會完整評估運算式,且其所有副作用會在執行與選取範圍相關的程式碼執行之前完成。

  • while 或 do 陳述式的控制運算式。 會完整評估運算式,且其所有副作用會在執行 while 或 do 迴圈的下次反覆項目中的陳述式之前完成。

  • for 陳述式的三個運算式中的每一個。 會完整評估每個運算式,且其所有副作用會在移至下一個運算式之前完成。

  • return 陳述式中的運算式。 會完整評估運算式,且其所有副作用會在控制回到呼叫函式之前完成。

請參閱

參考

運算式的語意