原创 switch使用注意事项

2008-12-4 20:12 4906 9 9 分类: 工程师职场
使用switch要注意的问题
   有一例子:将switch中的default中的字母‘l’打成数字‘1’能顺利通过编译,没有提示错误,绝大多数lint程序都无法检测到这个错误。
顺便提一句,在c语言中,const并非真正的表示常量,如:
const two="2";
switch(i)
{
 case 1:printf(“case 1\n”);
 case two:printf(“case 2\n”);
 **error**^^^integra constant expression expected
 case 3:printf(“case 3\n”);
     default:;
}
上面的代码将会产生一个如上所示的编译错误,这并不是switch语句本身的过错,但这条switch语句展示了const并非真正的常量。
也许switch语句最大的缺点就是它不会在每个case标签后的语句执行后自动中止,一旦执行某个case语句,程序将会依次执行后面所有的case,除非遇到break,下述代码:
switch(2)
{
 case 1:printf(“case 1\n”);
 case 2:printf(“case 2\n”);
 case 3:printf(“case 3\n”);
 case 4:printf(“case 4\n”);
 default:printf(“default\n”);
}
其输出结果将是:
case2
case3
case4
default
这称之为“fall through”,它的意思是:如果case语句后面不加break语句,它将依次执行下去,以满足某些特殊情况的要求。但实际上,这是一个非常不好的特性,因为几乎所有的case语句都要以break结尾。大部分lint程序在发现“fall through”情况时甚至会发出警告信息。
break语句跳出的是最近的循环语句或switch语句。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条