每当我 运行 代码时,我的默认情况总是 运行s 与其他情况 (C++)
Whenever i run the code my default case always runs with the other cases (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;
}
为箭头键生成两个值。第一个是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\n";
break;
case 80:
std::cout << "Down\n";
break;
case 75:
std::cout << "Left\n";
break;
case 77:
std::cout << "Right\n";
break;
default:
std::cout << "null\n";
break;
}
} while (c != 0x1B /* esc */);
}
我也在每个案例的结尾使用了 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;
}
为箭头键生成两个值。第一个是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\n";
break;
case 80:
std::cout << "Down\n";
break;
case 75:
std::cout << "Left\n";
break;
case 77:
std::cout << "Right\n";
break;
default:
std::cout << "null\n";
break;
}
} while (c != 0x1B /* esc */);
}