每当我运行代码时,我的默认情况总是与其他情况一起运行(C ++)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每当我运行代码时,我的默认情况总是与其他情况一起运行(C ++)相关的知识,希望对你有一定的参考价值。

我在每个案例的最后都使用了Break,但它没有打破它。我认为_getch()一次采用两个输入,或者在每个循环开始时总是有一些垃圾数据。

这是生成此问题的代码。

#include <conio.h>
#include <iostream>
using namespace std;

int main()
{
    int c = 0;
    while (1)
    {
        c = 0;

        switch ((c = _getch())) {
        case 72:
            cout << endl << "Up" << endl;//key up
            break;
        case 80:
            cout << endl << "Down" << endl;   // key down
            break;
        case 75:
            cout << endl << "Left" << endl;  // key left
            break;
        case 77:
            cout << endl << "Right" << endl;  // key right
            break;
        default:
            cout << endl << "null" << endl;  // not arrow
            break;
        }

    }

    return 0;
}

[Here my output]

答案

对于箭头键,会生成两个值。第一个是0xE0,表明下面的一个是不寻常的。

你的代码修好了:

#include <conio.h>
#include <iostream>

int main()
{
    int c = 0;
    do {
        c = _getch();
        if (c == 0xE0)
            c = _getch();

        switch (c) {
        case 72:
            std::cout << "Up
";
            break;
        case 80:
            std::cout << "Down
";
            break;
        case 75:
            std::cout << "Left
";
            break;
        case 77:
            std::cout << "Right
";
            break;
        default:
            std::cout << "null
";
            break;
        }

    } while (c != 0x1B /* esc */);
}

以上是关于每当我运行代码时,我的默认情况总是与其他情况一起运行(C ++)的主要内容,如果未能解决你的问题,请参考以下文章

有没有其他方法可以在不使用`getContentResolver()`的情况下访问联系人?

当非默认是输入通道时,为啥 go 中的选择总是进入默认情况?

每当添加断点时 LLDB 就会崩溃

每当我使用gem命令时,为什么Ruby会抛出语法错误?

TypeError:每当我在不和谐的情况下向我的机器人输入 PM 时,都无法读取未定义的属性“id”

如何阻止我的推送与我的公开 PR 合并?