我有一个非常简单的代码段,其中有一个带有 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))
在进入开关盒之前。但我的问题是为什么它首先会发生。
它不应该转到默认情况并再次要求输入吗?