2014-10-17 106 views
-1

我遇到了这个程序的问题。我试图使用嵌套的switch语句。为什么这个嵌套的switch语句不起作用? (C++)

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正在被使用而未被初始化,即使我在主程序中初始化了它。任何可以解决这个问题的建议?如果你能解释为什么这不起作用,我会很感激。

+1

_“尽管我在主程序中初始化了它”_你显然没有。你能显示你初始化它的位置吗? – 2014-10-17 00:09:16

回答

1

你很清楚不要初始化log_select,而且你也不读任何用户输入。这就是为什么你会得到一个错误:它的值是未指定的(阅读:不存在),你试图评估它有不确定的行为(阅读:不这样做)。

我想你忘记了:

cin >> log_select; 

初始化的变量0,你会写:

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

&hellip;但如果你这样做了,那么你止跌没有编译器错误通知您这个错误!有时未能初始化变量是有用的。

+0

大约五秒钟后,我发布了这个,我意识到我忘了'log_select'输入。我不知道我在想什么!感谢您的反馈。我将使所有默认值都为0. – 2014-10-17 00:13:34

1

在使用它的switch语句之前,不要将输入读入log_select。

1

“初始化”与“声明”不同。你清楚地声明了这个变量,但是你没有给它赋值。因此你没有初始化它。

+0

它被声明和定义。它没有被初始化。而且这些术语都不是代码,所以请不要使用代码格式化块来突出显示它们。干杯。 – 2014-10-17 00:15:28

+0

@LightnessRacesinOrbit该死的。哈斯克尔让我做坏事... – ShadoWalkeR 2014-10-17 00:22:06

相关问题