jiqi55555 发表于 2016-10-4 06:23:04

谁能给我解释下这个为什么 要 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);
}

n0noper 发表于 2016-10-4 06:23:05

'0' 的ascii码值是0x30 ,十六进制的30H转换成十进制就是48

例如,字符'3'的ASCII码值为0x33,想转变成数字3,就可以了利用'3' - '0' = 3

减法就是为了将字符类型的数字,转换为整数类型的值。
页: [1]
查看完整版本: 谁能给我解释下这个为什么 要 input[i]-48