int x = 0, w = 1;
char ch = 0;
while (ch < '0' || ch > '9') { // ch 不是数字时
- if (ch == '-') w = -1; // 判断是否为负
- ch = getchar(); // 继续读入
+ if (ch == '-') w = -1; // 判断是否为负
+ ch = getchar(); // 继续读入
}
while (ch >= '0' && ch <= '9') { // ch 是数字时
x = (x << 3) + (x << 1) + ch - '0'; // 将新读入的数字’加’在 x 的后面
// x<<3==x*8 x<<1==x*2 所以 (x<<3)+(x<<1) 相当于 x*10
- // x 是 int 类型,char 类型的 ch 和 ’0’ 会被自动转为其 ASCII 表中序号,相当于将 ch 转化为对应数字
+ // x 是 int 类型,char 类型的 ch 和 ’0’ 会被自动转为其 ASCII
+ // 表中序号,相当于将 ch 转化为对应数字
ch = getchar(); // 继续读入
}
return x * w; // 数字 * 正负号 = 实际数值