如果我不在开关盒中写默认怎么办?

问题描述 投票:39回答:8
int a = 10;
switch(a){
case 0:
    printf("case 0");
    break;
case 1:
    printf("case 1");
    break;
}

以上代码有效吗?

如果我确定int a不会有除1和0之外的任何其他值,我可以避免使用default吗?

如果在任何情况下一个值与1和0不同怎么办?

我知道这是一个愚蠢的问题,但我在想,这可能是非法的或未定义的行为,所以我只是要求确认。

c switch-statement
8个回答
7
投票

这是完全合法的代码。如果a既不是0或1,那么将完全跳过开关块。


3
投票

没有default案例是有效的。

但是,即使你确定你没有任何值而不是1和0,最好有一个默认情况,以捕获任何其他值(虽然理论上不可能,但在某些情况下可能会出现,如缓冲区溢出)并打印错误。


2
投票

是的,上面的代码是有效的,

如果开关条件与情况的任何条件都不匹配并且不存在默认值,程序执行将从开关退出而不做任何事情。


2
投票

默认不是强制性的,但总是很好。理想的代码,但我们的生活不是,在那里提供保护没有害处。它还可以帮助您调试是否发生任何意外情况。


1
投票

如果条件匹配则不相同,否则不提供。

在switch案例中,default不是必需的。如果没有匹配的情况并且未提供默认值,则不会执行任何操作。


0
投票

C编程语言中switch语句的语法如下:

switch(expression) {

   case constant-expression  :
      statement(s);
      break; /* optional */

   case constant-expression  :
      statement(s);
      break; /* optional */

   /* you can have any number of case statements */
   default : /* Optional */
   statement(s);
}
© www.soinside.com 2019 - 2024. All rights reserved.