valor
является int
. Его значения: 1
, 2
, 3
и т. Д., Но в метках дел у вас есть '1'
, '2'
, '3'
и т. Д. Это символы «1», «2», «3» и т. Д., А не целые значения 1, 2 и 3. Измените метки регистра на case 1:
, case 2:
, case 3:
и т. Д. Или, лучше, просто используйте value
в качестве добавляемого значения: поскольку это уже желаемое значение, нет смысла использовать switch
для его декодирования. (Вы можете добавить код sh, чтобы проверить, находится ли он в диапазоне от 1 до 13, и admoni sh пользователя, если это не так. Аналогично, switch
для naip
может иметь default
случаев который предупреждает пользователя, если костюм не распознан. И вы должны проверить, что каждый scanf
возвращает 1, указывая, что он успешно преобразовал один вход.)
Значения символов, таких как '1'
, являются кодами в набор символов, например 49 для '1'
в ASCII. Таким образом, case '1':
эквивалентно case 49:
(при использовании ASCII) и не будет соответствовать значению valor
от 1 до 13.
Также, когда в «одинарных кавычках» есть два символа как в '10'
, это формирует многосимвольную константу. Его значение определяется реализацией. Редко можно использовать такую форму.