pkqbszs 发表于 2023-1-2 18:07:32

一个小小的问题

num1 = *str1 - '0';
这个代码是什么意思呢

学习编程中的Ben 发表于 2023-1-2 18:30:56

发完整,str是什么,
不过根据经验是吧字符串格式的数字转化成int

pkqbszs 发表于 2023-1-2 18:39:36

学习编程中的Ben 发表于 2023-1-2 18:30
发完整,str是什么,
不过根据经验是吧字符串格式的数字转化成int

char *add_two_strs(char *str1, char *str2)
{
      int carry = 0; // 存放进位
      int num1, num2, num3;
      char *result;

      result = (char *)malloc(INIT_SIZE);
      if(result == NULL)
      {
                exit(1);
      }

      result = '\0';                // 需要 '\0'

      // 字符串的存放顺序跟加法规则相反
      // 需要先反转字符串
      str1 = reverse_str(str1);
      str2 = reverse_str(str2);

      // 两个字符串按位相加
      while(*str1 != '\0' || *str2 != '\0')
      {
                num1 = *str1 - '0';
                num2 = *str2 - '0';

                if(*str1 == '\0')
                {
                        num1 = 0;
                }
                else
                {
                        str1++;
                }

                if(*str2 == '\0')
                {
                        num2 = 0;
                }
                else
                {
                        str2++;
                }

                num3 = num1 + num2 + carry;
                if(num3 > 9)
                {
                        result = append_result(result, num3 - 10 + '0');
                        carry = 1;
                }
                else
                {
                        result = append_result(result, num3 + '0');
                        carry = 0;
                }
      }
   
      if(carry)
      {
                append_result(result, carry + '0');
      }

      result = reverse_str(result);

      return result;
}

pkqbszs 发表于 2023-1-2 18:40:13

学习编程中的Ben 发表于 2023-1-2 18:30
发完整,str是什么,
不过根据经验是吧字符串格式的数字转化成int

str就是以字符类型传入函数的一个整数

pkqbszs 发表于 2023-1-2 18:41:06

学习编程中的Ben 发表于 2023-1-2 18:30
发完整,str是什么,
不过根据经验是吧字符串格式的数字转化成int

为什么这样能把字符串格式改成整数呢

basketmn 发表于 2023-1-2 18:52:07

不改成整形怎么加减呢?
字符型数字不能相加减

学习编程中的Ben 发表于 2023-1-2 19:01:05

转换成acsll码运算

人造人 发表于 2023-1-2 19:09:14

学习编程中的Ben 发表于 2023-1-2 19:01
转换成acsll码运算

?
ascii ?
ascll ?

学习编程中的Ben 发表于 2023-1-2 19:09:46

人造人 发表于 2023-1-2 19:09
?
ascii ?
ascll ?

发错了, 对不起

两手空空儿 发表于 2023-1-3 16:51:33

本帖最后由 两手空空儿 于 2023-1-3 16:53 编辑

num1 = *str1 - '0';
ASCII里是用数值记录字符的, '0' = 30H, '5' = 35H ,
所以,如果 *str1 存放的是字符 '5',那么 *str1 - '0'就等于 35H-30H = 5, 这样num1就拿到了数字5

夏日炎凉 发表于 2023-1-4 21:23:02

basketmn 发表于 2023-1-2 18:52
不改成整形怎么加减呢?
字符型数字不能相加减

不需要转成整形吧,char类型的在计算机存储方式和int类型是一样的,所以字符串之间也能进行加减,只是不能进行比较而已(如果想法有错误的话,尽管指出{:10_254:})

小K酱油派 发表于 2023-1-14 16:24:08

夏日炎凉 发表于 2023-1-4 21:23
不需要转成整形吧,char类型的在计算机存储方式和int类型是一样的,所以字符串之间也能进行加减,只是不 ...

应该是有整型提升吧,要先转成int型,然后计算出答案后,截断放入char中。

月末 发表于 2023-1-14 16:56:51

pkqbszs 发表于 2023-1-2 18:39


应该是对str1这个指针进行取值然后转为整形赋值给num1的意思吧
页: [1]
查看完整版本: 一个小小的问题