【发布时间】:2014-04-07 10:47:51
【问题描述】:
通常在学校,我们的讲师会告诉我们始终在 switch case 语句的末尾添加 Default 语句。但是,我一直想知道所有(或大多数)场景是否有必要?
考虑以下 C++ 示例:
int num = rand()%3;
switch (num)
{
case 0: methodOne();
break;
case 1: methodTwo();
break;
case 2: methodThree();
break;
}
上面的情况,我觉得不可能有可以>2或者Default声明吗?
在 SO 中有类似的问题,要求在 switch-case 中需要 Default。那里给出的答复表明,我们几乎在任何时候都应该包含Default。但在我个人遇到的所有案例中,这似乎是多余的,因为永远无法联系到Default。
编辑:另外,就防御性编程而言,这种情况是否需要Default 声明?
如果我要添加 Default 声明。只会是error-handling 声明,我这样说对吗?
【问题讨论】:
-
在这种特定情况下,没有必要包含
default部分,因为正如您已经指出的那样,num 不可能有不同的值。 -
int i = 2; if (i == 2) { //...}。您需要另一个 else 语句吗?
-
就像一个注释,n%3 有时可能是负数,但如果它来自 rand 则不是
标签: c++ switch-statement case default