moosich 发表于 2021-3-12 10:33:26

关于do while语句,谢谢大家!

do
      {
                ch = getchar();
                if (ch >= '0' && ch <= '9')
                {
                        num = num * 10 + (ch - '0');
      }
                else
                {
                        if (num != 0)
                        {
                              break;
                        }
                }
      }
      while (ch != '\n');
如上面的代码中,我把while(ch != '\n')写成while ((ch = getchar()) != '\n'),两者都能编译,但是前者结果为:
请输入待转换的字符串:520
结果为520
而后者的结果为:
请输入待转换的字符串:520
结果为50
这是为什么呀?

巴巴鲁 发表于 2021-3-12 14:15:16

因为第二个有两个ch = getchar();
输入520,只有5和0会参加运算,2被覆盖了
页: [1]
查看完整版本: 关于do while语句,谢谢大家!