Jee*_*tel 44 c switch-statement
int a = 10;
switch(a){
case 0:
printf("case 0");
break;
case 1:
printf("case 1");
break;
}
Run Code Online (Sandbox Code Playgroud)
以上代码有效吗?
如果我确定int a
不会有除1和0之外的任何其他值,我可以避免default
吗?
如果在任何情况下一个值与1和0不同怎么办?
我知道这是一个愚蠢的问题,但我在想,也许这将是非法的或未定义的行为,所以我只是要求确认.
CB *_*ley 80
代码有效.如果没有default:
标签且没有case
标签与"已切换"值匹配,则不会执行任何受控复合语句.执行将从switch语句结束处继续.
ISO/IEC 9899:1999,第6.8.4.2节:
[...]如果没有转换的
case
常量表达式匹配且没有default
标签,则不执行开关体的任何部分.
Pra*_*ian 31
正如其他人指出的那样,它是完全有效的代码.但是,从编码风格的角度来看,我更喜欢添加一个default
带有注释的空语句,以表明我并没有无意中忘记它.
int a=10;
switch(a)
{
case 0: printf("case 0");
break;
case 1: printf("case 1");
break;
default: // do nothing;
break;
}
Run Code Online (Sandbox Code Playgroud)
使用/不使用生成的代码default
应该相同.