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,就会发现,还会让你继续输入···
#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,就会发现,还会让你继续输入···