switch语句中的break是否可以省略?
本帖最后由 jianhong_wu 于 2014-7-24 00:09 编辑uiTimeCnt++;//累加循环次数,
if(uiTimeCnt>=const_time_level) //时间到
{
uiTimeCnt=0; //时间计数器清零
led_dr=1; //让LED亮
ucLedStep=1; //切换到下一个步骤
}
break;
case 1:
uiTimeCnt++;//累加循环次数,
if(uiTimeCnt>=const_time_level) //时间到
{
uiTimeCnt=0; //时间计数器清零
led_dr=0; //让LED灭
ucLedStep=0; //返回到上一个步骤
}
break;
这段程序有“ ucLedStep=0; //返回到上一个步骤”和“ucLedStep=1; //切换到下一个步骤”了 那break可否省略呢???
本帖最后由 jianhong_wu 于 2014-7-24 00:24 编辑
鸿哥解答:
请看我分析以下代码,
第一种代码:
b=1;
a=1; //一开始a,b初始值是1 switch(a)
{
case0:
b= b +1;
break;
case 1: //a等于1,从这里入口
b=b +1; //程序执行到这里时,b变成了2
// 由于此处没有break语句,它会继续往下执行case 2后面的语句,直到遇到break才退出
case 2:
b =b +1; //此时b变成了3
break; //遇到break语直接退出switch
}
最后结果;b变了3.
第二种代码:
b=1;
a=1; //一开始a,b初始值是1 switch(a)
{
case0:
b= b +1;
break;
case 1: //a等于1,从这里入口
b= b +1; //程序执行到这里时,b变成了2
break; // 由于此有break语句,直接退出switch括号,它不会继续往下执行case 2后面的语句
case 2:
b = b +1; //这里没有被程序执行到
break;
}
最后结果;b变了2
好的懂了嘿嘿 嗯恩恩 明白了 解释的很详细 谢谢鸿哥了
页:
[1]