首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 for 循環中 i++ 與 ++i 無區別:遞增表達式獨立求值不影響循環語義

     編輯:程式設計綜合問答

結論

在 for (init; cond; incr) 中,`incr` 作為**獨立表達式語句**執行,`i++` 和 `++i` **效果完全相同**,循環次數、變量最終值均一致。

驗證代碼

int i, sum = 0;
for (i = 1; i <= 100; i++) sum += i;   // 後置
// i=101, sum=5050

sum = 0;
for (i = 1; i <= 100; ++i) sum += i;  // 前置
// i=101, sum=5050

區別場景

僅在**嵌入大表達式**時不同:

int a = 5, b;
b = a++;  // b=5, a=6
b = ++a;  // a=7, b=7

底層原理

  • `for` 循環語法糖展開為 `while`:`incr` 獨立一行,無返回值使用。
  • 編譯器優化後生成相同指令序列(`inc`/`add`)。

風格建議

  • 習慣用 `++i`(前置),避免臨時對象拷貝(對迭代器/複雜類型有效),基本類型無差異。
  • 統一團隊風格即可,無性能懸念。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved