C语言获取键盘按键值相同输出不同

img

这里是测试代码:


#include<stdio.h>
#include<conio.h>
int main()
{
    int key;
    while (1)
    {
        key = _getch();
        if (key == 27) break;
        if (key > 31 && key < 127) /*如果不是特殊键*/
        {
            printf("按了 %c 键    按 ESC退出!\n", key);
            printf("%d\n",key);
            continue;
        }
        key = _getch();
        if (key == 72) {printf("按了 上 键    按 ESC退出!\n");printf("%d\n",key);}
        if (key == 80) {printf("按了 下 键    按 ESC退出!\n");printf("%d\n",key);}
        if (key == 75) {printf("按了 左 键    按 ESC退出!\n");printf("%d\n",key);}
        if (key == 77) {printf("按了 右 键    按 ESC退出!\n");printf("%d\n",key);}
    }
    return 0;
}

H键和UP键key值都是72,咋输出不一样的
还有为啥要写两个key = _getch();

确定不是整人的问题?

按了"H键"之后, 打印"按了 H键 按 ESC退出!", 继续按了31-127之间的任意键, 不会有打印, 然后再按上键, 就打印了"按了 上 键 按 ESC退出!"