Я не могу найти ошибку в моем первом операторе switch

0

Я читаю принципы программирования книги и практикую с использованием 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 или некоторые другие значения, почему?

  • 0
    Может быть, вы должны рассмотреть повторное рассмотрение предыдущих глав
  • 0
    Вам нужно изучить разницу между символами один, '1' и номер 1. Подсказка: см. Таблицу ASCII.
Теги:
switch-statement
conditional-statements

2 ответа

4
Лучший ответ

Вы читаете один символ '1'. 1 нечетно.

Следующий символ все еще должен быть прочитан.

0
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:

Аналогичным образом изменяются и другие случаи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню