casio1374633

导航

 

自认为C语言还算入门的人,看来还是高估自己了.没想到在这个地方还有这么有趣的东西.有些话看来要仔细深究才能真正入门啊....

========================================================================================================

#include <stdio.h> 
int main(void) 
{ 
   int flag=0; 
   for(int j=0; j <2; j++) { 
      if(j==0) { 
         switch(j) { 
            case 0: 

            continue; 
         } 
         flag=1; 
      } 
   } 
   printf( " flag:%d\n ",flag); 
} 

输出: 
flag:0

如果代码为:
case 0: break;
输出:
flag:1



======================================================================

再看:

#include <stdio.h> 

void main() 
{ 
   int flag = 0; 
   int j = 0 ; 
   for(j=0; j <2; j++) { 
      if(j==0) { 
         if(j==0) { 
            continue; 

         } 
         flag=1; 

      } 

   } 
   printf( " flag:%d\n ",flag); 
} 

输出: 
flag:0

如果代码为:
break;
输出:
flag:0

==========================================

在C语言书中,对于continue和break是这么描述的:

break语句可以从最内层的循环或者switch语句中退出.

continue语句只能出现在for, while, do循环中

=========================================

结论:continue只对直接包含它的循环体有效(也就是for,while, 而switch{}中的不算循环体);而break有效的是直接包含它的for,while,switch块。



比如在不包含switch的代码中出现break或者continue,那么break跳出循环体,而continue跳出本次循环.

而对于在循环中嵌套switch语句的代码中,break仅跳出最内层的块,这个块若是switch,就仅跳出switch.

而continue即使出现在switch块中,因为continue的作用范围仅针对 for while 之类的循环语句,故不起作用,依旧跳出本次循环.

不注意的话也会认为同样是跳出switch语句块了.

posted on 2013-04-29 20:50  casio1374633  阅读(357)  评论(0编辑  收藏  举报