【问题标题】:What should be the position of default in switch statement? [duplicate]switch 语句中 default 的位置应该是什么? [复制]
【发布时间】:2017-12-27 18:58:24
【问题描述】:

我总是将default 放在所有案例的末尾,它可以正常工作,但是,今天我运行了这段代码,我的默认设置不起作用。我将它放在其他可能的位置以检查它是否可以工作,但它没有。它运行良好,除了当我接受与我所做的案例不匹配的用户输入时。谁能告诉我代码有什么问题或如何使默认语句起作用?

int main(){      
    int selection;

    do
    {
        cout << "Please make a selection: \n";
        cout << "1) Addition\n";
        cout << "2) Subtraction\n";
        cout << "3) Multiplication\n";
        cout << "4) Division\n";
        cin >> selection;
    } while (selection != 1 && selection != 2 && selection != 3 &&
        selection != 4);

    switch (selection)
    {
    case 1:
        cout << "you want addition\n";
        break;
    case 2:
        cout << "you want subtraction\n";
        break;
    case 3:
        cout << "you want multiplication\n";
        break;
    case 4:
        cout << "you want division\n";
        break;
    default:
        cout << "you entered wrong operation\n";
        break;

    }

    cout << "You selected option #" << selection << "\n";
    system("pause");
    return 0;
}

【问题讨论】:

  • 由于 do...while 条件,1 default。
  • 想想在你的do-while条件下会发生什么,比如输入5
  • @user0042 抱歉,但我不明白这是怎么重复的,这里 OP 的问题涉及错误的do-while 循环条件不是错误的switch
  • @Aira 您不需要 default,因为您的 while 条件保证输入将在 [1-4] 范围内。
  • “默认的位置应该是什么”——没关系。

标签: c++


【解决方案1】:

您的 do while 循环使程序无法继续使用不同于 1、2、3 或 4 的“选择”值。在这种情况下,您的 switch 语句只能达到您定义的 4 种情况,而无法达到默认值案子。您可以通过排除 do while 循环来更改您的代码,并且只允许输入一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 2011-04-28
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多