char ch = 'A';
// 1
ch = ch + 1; // ch 變為 'B'
cout << ch; // 輸出 B
// 2
cout << ch++; // 輸出 B (後置++ 返回舊值),ch 變為 'C'
// 3
cout << ch + 1; // 輸出 67 (ASCII 碼整數)
| 表達式 | 求值過程 | 結果類型 | 輸出 |
|---|---|---|---|
ch = ch + 1 | 1. ch 提升為 int (65)2. +1 → 66 3. 賦值給 char 截斷為 'B' | char | 'B' |
ch++ | 1. 返回舊值 'B' (66) 2. ch 變為 'C'3. << 重載識別為 char 輸出字符 | char | 'B' |
ch + 1 | 1. ch 提升為 int (67)2. +1 → 68 3. 無賦值,表達式類型為 int4. << 重載識別為 int 輸出數字 | int | 68 |
char/short 參與算術運算自動提升為 int;int 賦值回 char 會截取低 8 位;operator<<(char) 輸出字符,operator<<(int) 輸出數字。cout << char(ch + 1);;cout << int(ch);;printf("%d %c", ch, ch) 同時查看碼值與字符。ch+1 不賦值時保持 int 類型導致輸出數字;ch=ch+1 與 ch++ 因賦值/返回值為 char 類型故輸出字符。理解「整數提升」與「流重載解析」是關鍵。