jiqi55555 发表于 2016-10-4 06:28:49

谁能告诉我为何要 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:28:50

我又来了~~~

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

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

减法就是为了将字符类型的数字,转换为整数类型的值。

lili200238 发表于 2016-10-4 09:56:45

题目是什么?

jiqi55555 发表于 2016-10-4 10:44:43

这程序实现的是。。 读取 字符串 然后。。做加减法运算。。 我没搞懂 input-48是为什么。。

jiqi55555 发表于 2016-10-4 11:11:42

n0noper 发表于 2016-10-4 10:54
我又来了~~~

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


谢谢你, 我明白了 0的ascii是48, 数字1-9都已用其ascii码-48 来实现。。。,谢谢你。!
页: [1]
查看完整版本: 谁能告诉我为何要 input[i] - 48 谢谢 ~~