C语言switch语句-(XINWEN)
在有多个选择分支条件的情况下,用if 语句难免会繁琐且效率不高,此时便是switch语言的用武之地。 int i=1; switch(i){ case 0: printf(0); case 1: printf(1);
在有多个选择分支条件的情况下,用if 语句难免会繁琐且效率不高,此时便是switch语言的用武之地。
int i=1;
switch(i)
{
case 0:
printf("0");
case 1:
printf("1");
case 2:
printf("2");
default:
printf("default");
}
有些人会认为运行的结果是 2, 但是实际情况是 12default.
这也是初学者常犯的错误。按照常理,switch是选择分支,即满足那个case 执行那个case 块的语句,但是C语言中的switch有它的个性。来看看MSDN 的定义。
You can use the break statement to end processing of a particular case within the switch statement and to branch to the end of the switch statement. Without break,the program continues to the next case, executing the statements until a break or the end of the statement is reached. In some situations, this continuation may be desirable。
意思是,用break 语句 终止 当前的case ,直接到达switch 的末尾,执行完当前case 若有break则跳出switch。
如果没有break, 程序继续流向下一个case ,直到遇到break,或者 到达了switch末尾。
所以如果没有break语句,找到匹配条件的case 后,会从这里继续执行下面的case 直到最后一个case 或default。
明白了这个我们在上面的代码应该这样写。
int i=1;
switch(i)
{
case 0:
printf("0");
break;
case 1:
printf("1");
break;
case 2:
printf("2");
break;
default:
printf("default");
break;
}
这样就会输出 1;
一定要养成良好的习惯,给每一个case 加上break,以免造成疏忽的错误。
但是C语言的这种switch 特性也有它的优点。
比如设置每一个月的天数 Days 可以这样用switch
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12 :
Days=31;
break;
case 2:
//根据是否是闰年判断。
break;
case 4:
case 6:
case 9:
case 11:
Days=30;
break;
default: break;
}
这样便不用给每个case 都写语句了,case 1 3 5 7 为空,会自动到下一个CASE ,知道case 12 ,执行完跳出。
关于 defaut的位置。
这个问题相信有一大部分人没有考虑过,因为常见的程序中default 都在最后,这要造成了一些人认为default 在最后。
MSDN 的说法:
- 华南国际印刷展数码影像展下月揭幕焊锡机房产咨询雕刻刀激光焊气保焊丝Frc
- 体验中望CAD2006i的实用功能纠偏机红釉古玩隔离开关卡簧地源热泵Frc
- 世界经济今年将减速或影响中国经济冷热缸立式车床隔离柱拉伸模具化纤滤纸Frc
- 聚乙烯醇薄膜的生产及应用现状与展望三质押贷款分层铁片镜头传送带纱管Frc
- 土豆可制塑料薄膜海洋平台婚纱礼服仿石砖石材石椅防护口罩Frc
- 南京发放小学生近视防控手册秦淮江宁两区试电梯端面铣床铅蓄电池封口机械冷干机Frc
- 西咸新区供电公司完成思源电气厂内抽检圆锥轴承句容剪切机田鸡养殖电热锅Frc
- 厦门台湾签署意向书启动工程机械及光电产品酒店装修浓缩机宠物店防水材料精密五金Frc
- 水处理的自动化网络系统稳压电源调制器蒸煮设备金属五金书包Frc
- 路基压实老铁看山推C6压实效果666太仓护色剂旋挖钻电暖器光端机Frc