为什么 Switch 语句会被跳过?

Tah*_*hir -1 c++

我想了解为什么我的代码中跳过了 switch 语句?编译器只是没有读取 switch 语句中的数据并返回 0。我一定是做错了什么,但如果这是一个原因,我无法指出错误!

代码:

#include <iostream>
using namespace std;

void mainMenu();
void ResultUsr(int);

int main()
{
    int userChoice;
    int ResultUsrInput;

    mainMenu();

    cout << "Choice: ";
    cin >> userChoice;

    ResultUsr(ResultUsrInput);
    return 0;
}
void mainMenu()
{
    cout << "Enter your Choice for calculation" << '\n';
    cout << "1 for Addition" << '\n';
    cout << "2 for Subtraction" << '\n';
}
void ResultUsr (int ResultUsrInput)
{
    int value1, value2;
    switch (ResultUsrInput)
    {
    case 1:
        cout << "Enter Your first Value: "; cin >> value1;
        cout << "Enter Your Second Value: "; cin >> value2;
        cout << "The result for the Entered values [" << value1 << "] and [" << value2 << "] is equal to [" << value1 + value2 << "]" << '\n';
        break;
    case 2:
        cout << "Enter Your first Value: "; cin >> value1;
        cout << "Enter Your Second Value: "; cin >> value2;
        cout << "The result for the Entered values [" << value1 << "] and [" << value2 << "] is equal to [" << value1 - value2 << "]" << '\n';
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

Imr*_*ran 5

ResultUsrInput调用 function 时,您尚未为变量赋值ResultUsr(ResultUsrInput)。您必须先分配该值。在您的代码中似乎您希望从用户那里获得选择,因此您应该在调用函数userChoice时在参数中使用ResultUsrmain()



ResultUsr(userChoice);
Run Code Online (Sandbox Code Playgroud)

更好的方法是您应该有default如下代码所示的情况。

void ResultUsr (int ResultUsrInput)
{
    int value1, value2;
    switch (ResultUsrInput)
    {
    case 1:
        cout << "Enter Your first Value: "; cin >> value1;
        cout << "Enter Your Second Value: "; cin >> value2;
        cout << "The result for the Entered values [" << value1 << "] and [" << value2 << "] is equal to [" << value1 + value2 << "]" << '\n';
        break;
    case 2:
        cout << "Enter Your first Value: "; cin >> value1;
        cout << "Enter Your Second Value: "; cin >> value2;
        cout << "The result for the Entered values [" << value1 << "] and [" << value2 << "] is equal to [" << value1 - value2 << "]" << '\n';
        break;
    default:
        court<<"Default case executed";
        break; 
    }
}
Run Code Online (Sandbox Code Playgroud)


Саш*_*аша 5

在主函数中,您必须使用已用于获取用户输入的变量来发送和绑定用户输入。EX:在主函数中,您通过 switch 语句中的变量 userChoice 和 Binding ResultUsrInput 获取用户输入,该语句为空并返回 0 或默认情况。

绑定 userChoice 或通过 ResultUsrInput 获取输入。

检查解决方案:

#include <iostream>
#include <limits>
using namespace std;

void mainMenu();
double ResultUsr(int);

int main()
{
    //int userChoice;
    int ResultUsrInput;

    mainMenu();

    cout << "Choice: ";
    cin >> ResultUsrInput;

    ResultUsr(ResultUsrInput);
    return 0;
}
void mainMenu()
{
    cout << "Enter your Choice for calculation" << '\n';
    cout << "1 for Addition" << '\n';
    cout << "2 for Subtraction" << '\n';
}
double ResultUsr (int ResultUsrInput)
{
    int value1, value2;
    switch (ResultUsrInput)
    {
    case 1:
        cout << "Enter Your first Value: "; cin >> value1;
        cout << "Enter Your Second Value: "; cin >> value2;
        cout << "The result for the Entered values [" << value1 << "] and [" << value2 << "] is equal to [" << value1 + value2 << "]" << '\n';
        break;
    case 2:
        cout << "Enter Your first Value: "; cin >> value1;
        cout << "Enter Your Second Value: "; cin >> value2;
        cout << "The result for the Entered values [" << value1 << "] and [" << value2 << "] is equal to [" << value1 - value2 << "]" << '\n';
        break;
        default:
        cout<<"Invalid Input or error in Code";
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)