老牛来学习 发表于 2020-2-7 16:37:55

字符转换问题

比如
我输入

int a = 0;
a = a + '1'
打印出来的结果是a + 48(这个48是ascii码字符1的对应十进制)
还是a+1,结果是1?
中间存入的过程是怎样的。谢谢

zltzlt 发表于 2020-2-7 16:41:35

将 '1' 转换为对应的 ASCII 码 49 再与整型数字 a 相加,最后 a 是 49。

老牛来学习 发表于 2020-2-7 16:55:48

zltzlt 发表于 2020-2-7 16:41
将 '1' 转换为对应的 ASCII 码 49 再与整型数字 a 相加,最后 a 是 49。

#include <stdio.h>

int main()
{
      int ch;
      int num = 0;

      printf("请输入待转换的字符串:");

      do
      {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        num = 10 * num + (ch - '0');         //那这一行是如何实现移位的呢,输入1后跳转的这里num为10*0+(1-48),结果为-47,输出num也为-47啊。
                }
                else
                {
                        if (num)
                        {
                              break; // 如果已有数字,则退出循环
                        }
                }

      }
      while (ch != '\n');

      printf("结果是:%d\n", num);

      return 0;
}

召唤风云 发表于 2020-2-7 18:35:45

老牛来学习 发表于 2020-2-7 16:55
#include

int main()


应该是10*0+('1'-48),'1'的值为49,所以答案是1。
页: [1]
查看完整版本: 字符转换问题