leihen0218 发表于 2018-5-10 10:51:47

新手求助

#include <stdio.h>
#include <conio.h>

void main()
{
        int i = 0;
        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\n",i);
               
        }
        printf ("The end\n");
}

这个c=0 是干啥用的啊 ,为啥不加就不行啊

muwuren 发表于 2018-5-10 11:35:54

c是char型,对照ascii表可查看27为ESC键,13为回车键。
       c在声明之后,没有赋值,它的值是不确定的(第一次进入循环),同时清除c等于回车键的值(以后循环)

BngThea 发表于 2018-5-10 11:38:58

因为在前面声明了c为char,而没有初始化
然后变量直接在使用之前都应该进行合理的初始化

理想小青年 发表于 2018-5-10 11:48:27

本帖最后由 理想小青年 于 2018-5-10 11:50 编辑

简单来说
char c; c这个字符串占一个字节,这个字节里是啥东西未知(你没初始化),所以c这个字节存的可能是别的数据,可能是数字也可能是字符串。
一个未知的字节(c),你非给他做操作,结果当然也是未知的{:10_249:}
而且你这个两个循环必须保证,内循环开始c都得初始化!
页: [1]
查看完整版本: 新手求助