2014-10-17 131 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

相關問題