为什么这个嵌套的switch语句不起作用? (C ++)

时间:2014-10-17 00:07:58

标签: c++ switch-statement

我遇到了这个程序的问题。我正在尝试使用嵌套的switch语句。

 void main()
{
int function_select, log_select, root_select ;
do
{
    cout << "Please select the function you would like to use \n 1 : Logarithm \n 2 : Root \n 0 : Quit" << endl;
    cin >> function_select;

    switch (function_select)// main menu
    {
    case 1:// log menu
    {
        cout << "Please select which logarithm function you would like to perform \n 1 : Common Log \n 2 : Natural Log \n 3 : Log Base n \n 0 : Back" << endl;
        switch (log_select)
        {
        case 1://common log
        {

        }
        break;

抱歉,如果它看起来有点乱。我还是C ++的新手。这个程序还有更多,但我知道问题在于本节。当我运行程序时,我得到一个错误,指出变量log_select正在被使用而没有被初始化,即使我在主程序中初始化它。有什么建议能解决这个问题吗?如果你能解释为什么这不起作用,我会很感激。

3 个答案:

答案 0 :(得分:1)

在使用它的switch语句之前,你没有将输入读入log_select。

答案 1 :(得分:1)

您显然初始化log_select,并且您也无法读取任何用户输入。

这就是您收到错误的原因:它的值未指定(读取:不存在),并且您对其进行评估的尝试具有未定义的行为(请阅读:不要这样做)。

我猜你忘记了:

cin >> log_select;

要将这些变量初始化为0,您需要写:

int function_select = 0, log_select = 0, root_select = 0;

...虽然如果你这样做了,那么你就不会有编译错误通知你这个错误!有时无法初始化变量很有用。

答案 2 :(得分:1)

“已初始化”与“已声明”不同。您清楚地声明了该变量,但您没有为其赋值。因此你没有初始化它。