C 和 C++ 语言分别在 ctype.h 和 cctype 头文件中,提供了函数 `isdigit` , 这个函数会检查传入的参数是否为十进制数字字符,是则返回 **true** ,否则返回 **false** 。对应的,在下面的代码中,可以使用 `isdigit(ch)` 代替 `ch >= '0' && ch <= '9'` ,而可以使用 `!isdigit(ch)` 代替 `ch <'0' || ch> '9'`
+
### 代码实现
```cpp
x = x * 10 + (ch - '0'); // 将新读入的数字’加’在 x 的后面
// x 是 int 类型,char 类型的 ch 和 ’0’ 会被自动转为其对应的
// ASCII 码,相当于将 ch 转化为对应数字
+ // 此处也可以使用 (x<<3)+(x<<1) 的写法来代替 x*10
+ // 但是这样在大部分情况下会导致代码效率变低,故不建议采用此类写法
ch = getchar(); // 继续读入
}
return x * w; // 数字 * 正负号 = 实际数值