Я читаю принципы программирования книги и практикую с использованием C++, и книга ввела концепцию оператора switch и пример того, что мы можем сделать, когда хотим выполнить одно и то же действие для серии ярлыков case:
cout << "Please enter a digit : ";
char a = 0;
cin >> a;
switch (a) {
case '0': case '2': case '4': case '6': case '8':
cout << "is even\n";
break;
case '1': case '3': case '5': case '7': case '9':
cout << "is odd\n";
break;
default:
cout << "is not a digit\n";
break;
}
Компилятор не сообщает о какой-либо ошибке, но когда я запускаю программу, если я ввожу значение 11, например, программа распечатывает: нечетно. Зачем? Я ожидал увидеть: не цифра, но я не могу понять, где проблема. Эта проблема также возникает, если я ввожу значение 999 или некоторые другие значения, почему?
Вы читаете один символ '1'
. 1 нечетно.
Следующий символ все еще должен быть прочитан.
cout << "Please enter a digit : ";
Вы просите пользователя ввести цифру. Почему вы храните его в char
?:
char a = 0;
Вам нужно сохранить его в int
:
int a = 0;
Тогда все, что вам case
есть char
S:
case '0': case '2': case '4': case '6': case '8':
Это должно быть изменено на int
s:
case 0: case 2: case 4: case 6: case 8:
Аналогичным образом изменяются и другие случаи.