表達式 `s = (i++) * (i++)` 在 C/C++ 中屬於 **未定義行為 (Undefined Behavior, UB)**。標準未規定副作用 (遞增) 何時生效、求值順序,不同編譯器、優化等級、上下文結果均可能不同。
VC6.0 可能先生成代碼:
1. 讀取 `i` (0) → 暫存
2. 讀取 `i` (0) → 暫存
3. 相乘 → 0
4. 兩次遞增 → `i` 變 2
5. 賦值 `s=0` (但題目說結果 1,可能版本差異)。無論如何,**不可依賴**。
int i = 0;
int a = i++; // a=0, i=1
int b = i++; // b=1, i=2
int s = a * b; // s=0, 明確定義行為