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

_ «хотя я инициализировал его в основной программе». Вы явно этого не сделали. Можете ли вы показать, где вы его инициализировали? –

ответ

1

Вы явно не делаете, инициализируете log_select, и вы также не читаете ни одного пользовательского ввода.

Именно поэтому вы получаете сообщение об ошибке: его значение не указано (чтение: не существует), и ваша попытка оценить его имеет неопределенное поведение (читайте: не делайте этого).

Я думаю, вы забыли:

cin >> log_select; 

Чтобы инициализировать эти переменные 0, вы бы написать:

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

& hellip; хотя если бы вы сделали это, то вы Wouldn У меня была ошибка компилятора, сообщающая вам об этой ошибке! Иногда полезно не инициализировать переменные.

+0

Примерно через пять секунд после того, как я разместил это, я понял, что забыл вход 'log_select'. Я не знаю, о чем я думал! Спасибо за отзывы. Я сделаю все по умолчанию равным 0. –

1

Вы не читаете ввод в log_select перед оператором switch, который его использует.

1

«Инициализировано» отличается от «объявлено». Вы четко указали эту переменную, но вы не присвоили ей значение. Поэтому вы не инициализировали его.

+0

Это объявлено и определено. Он не инициализирован. И ни один из этих терминов не является кодом, поэтому, пожалуйста, не используйте блоки форматирования кода, чтобы выделить их. Приветствия. –

+0

@LightnessRacesinOrbit Черт. Хаскелл заставляет меня делать плохие вещи ... – ShadoWalkeR

Смежные вопросы