不,但是为了进行错误检查或逻辑检查,还是应该在switch语句中加入default分支。例如,下述switch语句完全合法: switch (char_code) {
case tyt:
case 'y': printf ( " You answered YES ! \n" ) break case 'N':
case 'n': printf ("You answered NO!\n"); break }
但是,如果一个未知字符被传递给这条switch语句,会出现什么情况呢?这时,程序将没有任何输出。因此,最好还是加入一个default分支,以处理这种情况: ......
default: printf ("Unknown response : %d\n", char_code); break ......
此外,default分支能给逻辑检查带来很多方便。例如,如果用switch语句来处理数目固定的条件,而且认为这些条件之外的值都属于逻辑错误,那么可以加入一个default分支来辨识逻辑错误。请看下列:
void move_cursor (int direction) {
switch (direction) {
case UP: cursor_up() break
case DOWN: cursor_down() break
case LEFT: cursor_left () break
case RIGHT: cursor_ right ( ) break
default: printf ("Logic error on line number %ld!!! \n",
__ LINE__ ) break }
}
}
switch语句的最后一个分支可以不要break语句吗?
尽管switch语句的最后一个分支不一定需要break语句,但最好还是在switch语句的每个分支后面加上break语句,包括最后一个分支。这样做的主要原因是:你的程序很可能要让另一个人来维护,他可能要增加一些新的分支,但没有注意到最后一个分支没有break语句,结果使原来的最后一个分支受到其后新增分支的干扰而失效。在每个分支后面加上break语句将防止发生这种错误并增强程序的安全性。此外,目前大多数优化编译程序都会忽略最后一条break语句,所以加入这条语句不会影响程序的性能。
|