輸入流讀到字符 '2'(ASCII 50),需轉為整數 2。核心原理:數字字符編碼連續,'0'~'9' 對應 48~57。
int digit = ch - '0'; // ch 為 '0'~'9' 任一字符
// 例:'2' - '0' = 50 - 48 = 2
int charToInt(char ch) {
if (ch >= '0' && ch <= '9') return ch - '0';
return -1; // 非數字字符返回錯誤碼
}
int strToInt(const char* s) {
int val = 0, sign = 1;
if (*s == '-') { sign = -1; s++; }
while (*s >= '0' && *s <= '9') {
val = val * 10 + (*s - '0');
s++;
}
return val * sign;
}
避坑:切勿用atoi()直接轉單字符(需以 \0 結尾),更別寫switch(ch){case '0':return 0;...},減法法通用、無分支、極快。