getch用法 求解释

时间:2021-08-31 04:48:34
int n=0,k=0,h;
n=getch();
if(n>=128||n==0)
   k=getch();
h=k>0?n*256+k:n;
cout<<h<<"     "<<n<<"  "<<k;

代码如上  为什么运行的时候我按下 方向键 只用按一下  n 和 k  的值都有了 而且不一样 这中间有什么原因了 小白求解释。。

5 个解决方案

#1


按没按回车?

#2


因为不满足if的条件···所以不执行下面k=getch()

#3


getch 有缓存的功能,n的值可能是之前缓存的输入字符;

#4


lz : 你这个n定义为int 型 , 但是这个getch()是接受一个字符,也就是说你把编译器会把char变成int ,   getch() 的返回值是int型 ,只有当你输入的字符的ASCⅡ的值为0或者大于128时才执行那个if语句 , 顺便问一句你为什么不用cin>>n ??? 

#5


你可以试着把if(n>=128||n==0)改为if(n>=95||n==0)。然后敲击a,就会发现,还会让你继续输入···
引用 2 楼 lanfeng_10 的回复:
因为不满足if的条件···所以不执行下面k=getch()

#1


按没按回车?

#2


因为不满足if的条件···所以不执行下面k=getch()

#3


getch 有缓存的功能,n的值可能是之前缓存的输入字符;

#4


lz : 你这个n定义为int 型 , 但是这个getch()是接受一个字符,也就是说你把编译器会把char变成int ,   getch() 的返回值是int型 ,只有当你输入的字符的ASCⅡ的值为0或者大于128时才执行那个if语句 , 顺便问一句你为什么不用cin>>n ??? 

#5


你可以试着把if(n>=128||n==0)改为if(n>=95||n==0)。然后敲击a,就会发现,还会让你继续输入···
引用 2 楼 lanfeng_10 的回复:
因为不满足if的条件···所以不执行下面k=getch()