Что делать, если я не пишу по умолчанию в случае с переключателем?
int a=10;
switch(a)
{
case 0: printf("case 0");
break;
case 1: printf("case 1");
break;
}
приведен код выше?
, если я уверен, что int a не будет иметь значения, а не 1 и 0, тогда в этом случае я могу избежать значения по умолчанию:?
Что делать, если в любом случае значение будет отличаться, то 1 и 0?
Изменить: я знаю, что это глупый вопрос, но я думал, что, возможно, это было бы незаконным или undefined поведение, поэтому просто попросили убедиться
Ответы
Ответ 1
Код действителен. Если нет метки default:
, и ни один из ярлыков case
не соответствует значению "переключено", ни один из управляемых составных операторов не будет выполнен. Выполнение будет продолжаться с конца инструкции switch.
ISO/IEC 9899: 1999, раздел 6.8.4.2:
[...] Если преобразованное выражение константы case
не соответствует, и нет метки default
, никакая часть тела коммутатора не выполняется.
Ответ 2
Как указывали другие, это вполне допустимый код. Однако, с точки зрения стиля кодирования, я предпочитаю добавлять пустой оператор default
с комментарием, чтобы пояснить, что я не случайно не забыл об этом.
int a=10;
switch(a)
{
case 0: printf("case 0");
break;
case 1: printf("case 1");
break;
default: // do nothing;
break;
}
Код, сгенерированный с/без default
, должен быть идентичным.
Ответ 3
Это совершенно легальный код. Если a не равно 0 или 1, тогда блок переключателя будет полностью пропущен.
Ответ 4
Действительно, не имеет случая default
.
Однако, даже если вы уверены, что у вас не будет никаких значений, а не 1 и 0, хорошей практикой является случай по умолчанию, чтобы поймать любое другое значение (хотя это теоретически невозможно, оно может появиться в некоторых обстоятельства, такие как переполнение буфера) и распечатать сообщение об ошибке.
Ответ 5
да, приведенный выше код действителен,
если условие переключения не соответствует какому-либо условию для случая, а по умолчанию нет выполнения программы, выходя из коммутатора, ничего не делая.
Ответ 6
Значение по умолчанию не обязательно, но всегда полезно иметь его. Код в идеале, но наша жизнь не вредна для защиты. Это также поможет вам отладить, если произойдет что-то неожиданное.
Ответ 7
Это то же самое, что и нет, если условие согласовано, а другое не предусмотрено.
по умолчанию не является обязательным в случае коммутатора. Если никакие случаи не совпадают, а значение по умолчанию не предоставляется, просто ничего не будет выполнено.
Ответ 8
каждый случай должен иметь "default:" в конце, как это!
int a=10;
switch(a)
{
case 0: printf("case 1");
break;
case 1: printf("case 1");
break;
||||||||||||||||||||||||||
case 9: printf("case 1");
break;
default:
printf("default");
break;
}