谁能给我解释下这个为什么 要 input[i]-48
#include <stdio.h>char input, symbol;
int result, num1, num2, i;
int main() {
printf("Enter an expression ");
gets(input);
i = 0;
num1 = 0;
while (input != ' ') {
printf("%d\n",input);
num1 = num1 * 10 + input-48;
i++;
}
i++;
symbol = input;
i++;
i++;
num2 = 0;
while (input != '\0') {
num2 = num2 * 10 + input - 48;
i++;
}
if (symbol == '+') {
result = num1 + num2;
}
if (symbol == '-') {
result = num1 - num2;
}
printf("%d %c %d = %d\n", num1, symbol, num2, result);
}
'0' 的ascii码值是0x30 ,十六进制的30H转换成十进制就是48
例如,字符'3'的ASCII码值为0x33,想转变成数字3,就可以了利用'3' - '0' = 3
减法就是为了将字符类型的数字,转换为整数类型的值。
页:
[1]