便宜批发女友 发表于 2019-5-7 17:39:44

小甲鱼c中的一道题 搞不清为什么没停止而且这道题还没看懂啥意思

int main()
{
    int i;
    char c;
    while(1)
    {
      c = '\0';
      while(c != 13 && c != 27)
      {
            c = getch();
            printf("%c\n", c);
      }
      if(c == 27)
            break;
      i++;
      printf("The No. is %d", i);
    }
    printf("The End");
}
输出结果:

输入了:1

The No. is 34
The No. is 35
The No. is 36
The No. is 37
The No. is 38
The No. is 39
The No. is 40
The No. is 41
The No. is 42
The No. is 43
The No. is 44
The No. is 45
The No. is 46
The No. is 47
The No. is 48
The No. is 49
The No. is 50
The No. is 51
The No. is 52
The No. is 53
The No. is 54

ba21 发表于 2019-5-7 18:39:31

题目是怎么出的?

wwhywhy 发表于 2019-5-7 23:29:33

本帖最后由 wwhywhy 于 2019-5-7 23:30 编辑

回车的ascii码值是13.所以能跳出内嵌的while循环。也就是这句: while(c != 13 && c != 27)
然后就在最外层的while循环中执行。
另外,变量i没有初始化。所以它的值是随机的。但是会自增。
所以会出现你看到的结果。
页: [1]
查看完整版本: 小甲鱼c中的一道题 搞不清为什么没停止而且这道题还没看懂啥意思