首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言 ++i 與 i++ 差異詳解:前綴後綴遞增運算子的優先級與副作用

     編輯:關於C語言

核心差異

  • ++i(前綴):**先遞增,再取值**參與運算;
  • i++(後綴):**先取值,再遞增**;
  • 單獨作為語句時(++i; / i++;)效果完全相同。

經典範例

int i = 3, a;
a = i++ + 1;   // a = 3 + 1 = 4,i 變 4
a = ++i + 1;   // i 先變 4,a = 4 + 1 = 5

未定義行為陷阱

printf("%d %d", i++, i);      // 輸出順序**未定義**(編譯器決定求值順序)
a = i + ++i;                  // 同一變數在無序列點修改兩次 → **未定義行為**

規則:同一表達式中,**同一變數最多修改一次**,且讀取必須為了計算該修改的新值。

實務建議

  1. 獨立語句統一用 ++i(習慣性能微優化,避免臨時變數);
  2. 複合表達式**避免**對同一變數混用前/後綴;
  3. 函數參數求值順序未規定,勿在實參中對同一變數做副作用操作。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved