0
点赞
收藏
分享

微信扫一扫

关于C语言中获取上下左右ASCII的输出显示问题,-3272 -3280 -3275 -3277

影子喵喵喵 2022-03-12 阅读 47

摘要
最近在做一个贪吃蛇的小游戏,为了得到上下左右操作的实现,我试着找到上下左右的ASCII码,结果运行时控制台出现了意想不到结果,当我按“上”时,屏幕上显示的是-3272 按“下”时显示的是-3280 左:-3275 右:-3277
对于这个问题我百思不得其解,从网上查了好多资料,最后终于算是理解了一点点,分享给大家
下面是我为得到上下左右ASCII码做的程序(其实是借鉴了网上的大佬的方法):

#include<stdio.h>
#include<conio.h>
int main()
{
	char ch;
	while ((ch=_getch()) != 0x1B)
		//char ch = _getch();
	{
		printf("%d\n",ch);
	}
	
}

程序的解释如下:
当输入的符号不是Esc(因为Esc对应的ASCII码为27,所以十六进制表示为0x1B)时则打印出这个字符的ASCII码
当按下Esc时则结束程序
我用的是VS2019哈,然后当我按下上下左右后出现的结果是这样的:摁下,上下左右后的显示
出现这个问题的原因解释大致如下:
对于getch()函数一次只接收一个字节,而对于上下左右是双字节,所以这个上下左右的符号被分成了两部分来读入了,所以才会出现这样的情况
所以上下左右对应的ASCII码分别为72 80 75 77
至于为什么上下左右的ASCII不用前半部分-32 而只用了后半部分的正数,我猜应该是上下左右符号的前半部分都是一样的,只有后半部分才起标识的作用,只是我猜想哦。
分享到此结束,如果哪里有不对的还望多多指正!

举报

相关推荐

0 条评论