Подтвердить что ты не робот

Что делать, если я не пишу по умолчанию в случае с переключателем?

int a=10;
switch(a)
{
case 0: printf("case 0");
         break;
case 1: printf("case 1");
         break;
}

приведен код выше? , если я уверен, что int a не будет иметь значения, а не 1 и 0, тогда в этом случае я могу избежать значения по умолчанию:?

Что делать, если в любом случае значение будет отличаться, то 1 и 0?

Изменить: я знаю, что это глупый вопрос, но я думал, что, возможно, это было бы незаконным или undefined поведение, поэтому просто попросили убедиться

4b9b3361

Ответ 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;
}