序列點
國際標準 ISO / IEC 9899:201x 程式語言 - C.
訪問易失性物件,修改物件,修改檔案或呼叫執行任何這些操作的函式都是副作用,這些都是執行環境狀態的變化。
在表示式 A 和 B 的評估之間存在序列點意味著在與 B 相關聯的每個值計算和副作用之前,對與 A 相關聯的每個值計算和副作用進行排序。
以下是 2011 年線上出版的 C 語言標準草案附件 C 的完整序列點列表 :
序列點
1 以下是 5.1.2.3 中描述的序列點:
- 在函式呼叫和實際呼叫中的函式指示符和實際引數的評估之間。 (6.5.2.2)。
- 在以下運算子的第一個和第二個運算元的計算之間:邏輯 AND
&&
(6.5.13); 邏輯 OR||
( 6.5.14 ); 逗號,
(6.5.17)。- 在評估條件
? :
運算子的第一個運算元和第二個和第三個運算元中的任何一個之間進行評估(6.5.15)。- 完整宣告者的結尾:宣告者(6.7.6);
- 在評估完整表示式和下一個要評估的完整表示式之間。以下是完整表示式:不屬於複合文字的初始化程式(6.7.9); 表示式中的表示式(6.8.3); 選擇陳述的控制表示式(
if
或switch
)(6.8.4);while
或do
陳述的控制表示式 (6.8.5);for
語句的每個(可選)表示式 (6.8.5.3);return
語句中的(可選)表示式 (6.8.6.4)。- 緊接庫函式返回之前(7.1.4)。
- 在與每個格式化的輸入/輸出函式轉換說明符(7.21.6,7.29.2)相關聯的操作之後。
- 緊接在每次呼叫比較函式之前和之後,以及對比較函式的任何呼叫和作為引數傳遞給該呼叫的物件的任何移動之間(7.22.5)。