核心差異:
int i = 3;
int y = (i++) + (i++) + (i++);
| 步驟 | 運算式 | i 當前值 | 該項取值 | 備註 |
|---|---|---|---|---|
| 1 | i++ | 3 | 3 | 先取值 3,再 i=4 |
| 2 | i++ | 4 | 4 | 先取值 4,再 i=5 |
| 3 | i++ | 5 | 5 | 先取值 5,再 i=6 |
| 結果 | y = 3+4+5 = 12 | 最終 i=6 | ||
int i = 3;
int y = (++i) + (++i) + (++i);
| 步驟 | 運算式 | i 當前值 | 該項取值 |
|---|---|---|---|
| 1 | ++i | 4 | 4 |
| 2 | ++i | 5 | 5 |
| 3 | ++i | 6 | 6 |
| 結果 | y = 4+5+6 = 15 | 最終 i=6 | |
對於基本型別 (int、指標) 編譯器會優化掉差異;但對於類別迭代器 (C++ STL、Java Iterator),前置遞增避免建立臨時物件,效能更佳,建議循環中統一用 ++it。