2016-10-13 3 views
0

У меня возникла небольшая проблема с моей функцией. Когда я набрал 8, я хочу, чтобы он ушел. Однако, когда я печатаю 8, оно выводит мое сообщение по умолчанию, а затем завершает работу. Что я пропустил?Корпус выключателя внутри петли

void Selection() 
{ 
    int selection; 

    while (selection != 8) 
    { 
     printMenu(); 
     scanf("%d", &selection); 
     switch (selection) 
     { 
      case '1': /*FUNCTION HERE*/ ; break; 
      case '2': /*FUNCTION HERE*/ ; break; 
      case '3': /*FUNCTION HERE*/ ; break; 
      case '4': /*FUNCTION HERE*/ ; break; 
      case '5': /*FUNCTION HERE*/ ; break; 
      case '6': /*FUNCTION HERE*/ ; break; 
      case '7': /*FUNCTION HERE*/ ; break; 
      case '8': break; 
      default: printf("Unkown command please try again.\n"); break; 
     } 
    } 
} 
+2

'int selection;' -> 'int selection = -1;' other * undefined behavior *. –

+6

символы и ints - разные вещи. '8! = '8'' – njzk2

ответ

4

Линия

scanf("%d", &selection); 

вводит int значение, скажем 8. Но в вашем case заявлении

case '8': break; 

вы тестируете значение в символов. Пожалуйста, измените все эти case заявления, такие как

case 8: break; 

Кроме того, вы должны инициализировать локальную переменную selection перед вами первый тест это. Компилятор должен был предупредить вас об этом.