名稱空間
變體
操作

“好像”規則

來自 cppreference.com
< c‎ | 語言

允許任何和所有不改變程式可觀測行為的程式碼轉換。

[編輯] 解釋

C 編譯器可以對程式執行任何更改,只要以下條件保持不變

1) 在每個序列點,所有volatile物件的值都是穩定的(之前的評估已完成,新的評估尚未開始)。
(C11 之前)
1)volatile物件的訪問(讀寫)嚴格按照它們出現的表示式的語義進行。特別是,它們不會與同一執行緒上的其他volatile訪問重排
(C11 起)
2) 程式終止時,寫入檔案的資料應與程式按原樣執行時完全一致。
3) 傳送到互動式裝置的提示文字應在程式等待輸入之前顯示。
4) 如果支援並設定為ON#pragma STDC FENV_ACCESS,則保證浮點運算運算子和函式呼叫會觀察到浮點環境(浮點異常和舍入模式)的更改,如同按原樣執行一樣,但以下情況除外:
  • 除了型別轉換和賦值之外的任何浮點表示式的結果可能具有與表示式型別不同的浮點型別的範圍和精度(參見FLT_EVAL_METHOD),
  • 儘管有上述規定,任何浮點表示式的中間結果都可以按無限範圍和精度計算(除非#pragma STDC FP_CONTRACTOFF)。
(C99 起)

[編輯] 注意

[編輯] 另請參見

有關“彷彿”規則C++ 文件