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语句。

期待 发表于09-17 14:30 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

期待
期待(总统)
金币:32857个|学分:67868个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号