【发布时间】:2011-12-22 16:59:05
【问题描述】:
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#7 中,“case when”具有更大的灵活性,我开始涵盖所有可能的情况,并使用 default 来涵盖不可能的情况。道格拉斯·亚当斯会理解这种观点。
-
我通常会添加
ASSERT(false);,以便在 DEBUG 构建中检测到意外值。
标签: c switch-statement