int a = 10;
switch(a){
case 0:
printf("case 0");
break;
case 1:
printf("case 1");
break;
}
以上代码有效吗?
如果我确定int a
不会有除1和0之外的任何其他值,我可以避免使用default
吗?
如果在任何情况下一个值与1和0不同怎么办?
我知道这是一个愚蠢的问题,但我在想,这可能是非法的或未定义的行为,所以我只是要求确认。
这是完全合法的代码。如果a既不是0或1,那么将完全跳过开关块。
没有default
案例是有效的。
但是,即使你确定你没有任何值而不是1和0,最好有一个默认情况,以捕获任何其他值(虽然理论上不可能,但在某些情况下可能会出现,如缓冲区溢出)并打印错误。
是的,上面的代码是有效的,
如果开关条件与情况的任何条件都不匹配并且不存在默认值,程序执行将从开关退出而不做任何事情。
默认不是强制性的,但总是很好。理想的代码,但我们的生活不是,在那里提供保护没有害处。它还可以帮助您调试是否发生任何意外情况。
如果条件匹配则不相同,否则不提供。
在switch案例中,default不是必需的。如果没有匹配的情况并且未提供默认值,则不会执行任何操作。
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);
}