关于下面这段代码,预想的情况是输入一个字符,那么所有case都不匹配,会直接进入到default并输出错误,但最后的运行结果确实进入到了case 0,这是为什么呢
#include <iostream>
using namespace std;
int main()
{
int choice;
cout << "input a number between 0-2: ";
cin >> choice;
switch (choice)
{
case 0:
cout << "your input is 0" << endl;
break;
case 1:
cout << "your input is 1" << endl;
break;
case 2:
cout << "your input is 2" << endl;
break;
default:
cout << "your input is error" << endl;
}
return 0;
}
感谢各位的解答!
你输入错误,所以chioce根本没有得到值,自然是0
像这种简单的错误,我一般都建议你自己单步调试,打个断点,一步一步跟着程序来看,更有助于自己发现问题。别人告诉你的远不如自己调试发现。多用单步调试!
“输出的0是因为CIN接收不成功,根本就没给choice赋值,而0是初始化的时候给的,不是后来赋的(有些编译会不给你初始化为0的,直接就输出一个很大的随机数。或者可能编译时报变量没初始化”
彻底明白问题出在哪儿了,谢谢大家的意见和回答!