Правильно ли использовать инструкцию if перед открытием switch
case
и избежать использования ключевого слова default
? Например, мне нужна программа, которая принимает в качестве входного числа месяц и сообщает свое имя. Это код, который использует оператор switch
case
:Использование инструкции if вместо значения по умолчанию для корпуса коммутатора
#include <stdio.h>
#include <stdlib.h>
main() {
int month;
printf("Insert the number of the month and the program will return its name");
scanf("%i", &month);
switch (month) {
case (1):
printf("The month is January");
break;
case (2):
printf("The month is February");
break;
case (3):
printf("The month is March");
break;
case (4):
printf("The month is April");
break;
case (5):
printf("The month is May");
break;
case (6):
printf("The month is June");
break;
case (7):
printf("The month is July");
break;
case (8):
printf("The month is August");
break;
case (9):
printf("The month is September");
break;
case (10):
printf("The month is October");
break;
case (11):
printf("The month is November");
break;
case (12):
printf("The month is December");
break;
default:
printf("not valid");
}
system("pause");
return 0;
}
Тогда мне было интересно, если я могу поставить условие недействительности в if
заявления, а не в default
ключевом слове. Мне кажется правильным, поскольку я хочу проверить значение до того, как программа выполнит оператор switch
case
. Как вы думаете, было бы правильно? Если я не прошу слишком много, не могли бы вы рассказать мне, почему?
Код с if
высказыванием:
#include <stdio.h>
#include <stdlib.h>
main() {
int month;
printf("Insert the number of the month and the program will return its name");
scanf("%i", &month);
if (month >= 1 && month <= 12) {
switch (month) {
case (1):
printf("The month is January");
break;
case (2):
printf("The month is February");
break;
case (3):
printf("The month is March");
break;
case (4):
printf("The month is April");
break;
case (5):
printf("The month is May");
break;
case (6):
printf("The month is June");
break;
case (7):
printf("The month is July");
break;
case (8):
printf("The month is August");
break;
case (9):
printf("The month is September");
break;
case (10):
printf("The month is October");
break;
case (11):
printf("The month is November");
break;
case (12):
printf("The month is December");
break;
default:;
}
} else {
printf("not valid");
}
system("pause");
return 0;
}
Спасибо и извините за мой английский, но это не мой родной язык. Дайте мне знать, если я не объяснил себя четко.
Отключить тему, но вам также будет лучше смотреть на массивы, чтобы хранить эти месяцы. Ваш код будет намного меньше ... –
Почему нет скобок для 'return', например' return (0) ', как есть для' case'? –
В конце дня оба выполняют задание. По моему мнению, первое является более чистым и будет иметь немного лучшую производительность, поскольку для этого потребуется меньшее сравнение. Производительность не будет значительно лучше, хотя печать занимает гораздо больше времени, чем сравнение, поэтому разница не должна быть заметной. –