Бесконечное зацикливание, когда Switch case получает неверный ввод

У меня есть очень простой сегмент кода, в котором есть цикл do while с переключателем, который выглядит следующим образом:

do {
    printf("Enter Choice\n");
    scanf("%d", &choice);
    switch(choice) {
          case 1: printf("1 selected");
                  break;
          case 2: printf("exit");
                  break;
          default: printf("wrong input");
                  break;
    }
} while (choice != 2);

В этом фрагменте кода, если я случайно ввожу символ вместо числа, программа бесконечно зацикливается и даже не принимает ввод. Я знаю, что это можно исправить, если вставить

if(isdigit(choice))

прежде чем попасть в корпус переключателя. Но мой вопрос в том, почему это происходит в первую очередь.

Разве он не должен перейти к регистру по умолчанию и снова запросить ввод?

0
задан Extn3389 10 August 2012 в 10:19
поделиться