关于C++中switch语句,所有case不匹配但最终不进入default,进入的是case 0的问题

关于下面这段代码,预想的情况是输入一个字符,那么所有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;
}

img

感谢各位的解答!

你输入错误,所以chioce根本没有得到值,自然是0

像这种简单的错误,我一般都建议你自己单步调试,打个断点,一步一步跟着程序来看,更有助于自己发现问题。别人告诉你的远不如自己调试发现。多用单步调试!

“输出的0是因为CIN接收不成功,根本就没给choice赋值,而0是初始化的时候给的,不是后来赋的(有些编译会不给你初始化为0的,直接就输出一个很大的随机数。或者可能编译时报变量没初始化”
彻底明白问题出在哪儿了,谢谢大家的意见和回答!