переключение оператора происходит прямо по умолчанию

0

В этом переключателе, независимо от того, что пользователь вводит, он всегда пропускает все случаи и всегда отображает случай по умолчанию !!

        cout << "Enter an operator(+, -, *, /)" << endl;
        cin >> oper;
        cout << "Enter second number" << endl;
        cin >> second;
        if (second > 9999)
        {
            cout << "ERROR\n";
            system("PAUSE");
            continue;
        }
        switch (oper)
        {
            case '+':
                ans = add(first, second);
            case '-':
                ans = subtract(first, second);
            case '*':
                ans = multiply(first, second);
            case '/':
                ans = divide(first, second);
            default:
                cout << "ERROR\n";
                system("PAUSE");
                continue;
        }
  • 4
    Там нет операторов break . Что вы ожидаете случиться ...?
Теги:
switch-statement

2 ответа

4
Лучший ответ

Фактически, он не пропускает случаи, он входит в них, а затем выполнение переходит к следующему случаю, в конечном итоге заканчивается в случае по умолчанию. Вам нужно добавить break заявления выйти из switch:

    switch (oper)
    {
        case '+':
            ans = add(first, second);
            break;
        case '-':
            ans = subtract(first, second);
            break;
        case '*':
            ans = multiply(first, second);
            break;
        case '/':
            ans = divide(first, second);
            break;
        default:
            cout << "ERROR\n";
            system("PAUSE");
            continue;
    }
0

Прежде всего, вам нужно иметь оператор break. Случай с переключателем не будет знать, где остановиться, если вы не включите их!

Вы можете исправить код следующим образом:

    cout << "Enter an operator(+, -, *, /)" << endl;
    cin >> oper;
    cout << "Enter second number" << endl;
    cin >> second;
    if (second > 9999)
    {
        cout << "ERROR\n";
        system("PAUSE");
        continue;
    }
    switch (oper)
    {
        case '+':
            ans = add(first, second);
        break;
        case '-':
            ans = subtract(first, second);
        break;
        case '*':
            ans = multiply(first, second);
        break;
        case '/':
            ans = divide(first, second);
        break;
        default:
            cout << "ERROR\n";
            system("PAUSE");
            continue;
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню