小瓶子 发表于 2014-7-23 23:57:28

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:04

本帖最后由 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

小瓶子 发表于 2014-7-24 00:14:26

好的懂了嘿嘿

小瓶子 发表于 2014-7-24 00:25:27

嗯恩恩      明白了   解释的很详细    谢谢鸿哥了
页: [1]
查看完整版本: switch语句中的break是否可以省略?