独闷闷网

标题: switch语句中的break是否可以省略? [打印本页]

作者: 小瓶子    时间: 2014-7-23 23:57
标题: 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:04
本帖最后由 jianhong_wu 于 2014-7-24 00:24 编辑

鸿哥解答:
请看我分析以下代码,
第一种代码:
b=1;
a=1; //一开始a,b初始值是1 switch(a)
{
   case  0:
           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)
{
   case  0:
           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


作者: 小瓶子    时间: 2014-7-24 00:14
好的  懂了  嘿嘿
作者: 小瓶子    时间: 2014-7-24 00:25
嗯恩恩      明白了   解释的很详细    谢谢鸿哥了




欢迎光临 独闷闷网 (http://dumenmen.com/) Powered by Discuz! X3.2