跳转语句

break语句

(1) 只能在循环体内和switch语句体内使用break语句。 
(2) 当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。 
(3) 当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环体。 
(4) 在循环结构中,应用break语句使流程跳出本层循环体,从而提前结束本层循环。

continue语句    

(1) continue语句的一般形式为:contonue; 
(2) 其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。 
(3) 注意:执行continue语句并没有使整个循环终止。在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试部分 ,然后决定循环是否继续进行。 
(4) 在for 循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的“表达式3”求值,然后进行“表达式2”的条件测试,最后根据“表达式2”的值来决定for循环是否执行。在循环体内,不论continue是作为何种语句中的语句成分,都将按上述功能执行,这点与break有所不同。

goto语句

使用规则:

goto 语句标签;

goto语句可以跳转到函数中的任一标签处,使用时特别简单方便,只需要在需要跳转到的地方定义一标签label,再执行语句“goto label;”正是由于使用goto的方便,所以新人往往容易形成对它的依赖,这是一个不好的习惯,其原因在于goto。使用不当会极大破坏C程序的结构,它可能跳过变量的初始化、重要的计算语句等。

但是某些时候使用goto也确实十分合适,如跳出多重循环时。不过一般用goto实现的功能,用其他方式也能实现,此时可根据实际情况权衡利弊再做取舍。

例子: 

void main(){
 int a=2,b=3;
 if(a<b)
 goto aa;
 printf("hello");
 aa:printf("s"); 
 return 0;
}

使用goto从多重循环中直接跳出

goto 语句至少有一处可显神通,它能从多重循环体中一下子跳到外面,用不着写很多次的break语句。例如:

for(......)  
{  
  for(....)  
  {  
    for(.....)  
    {  
      // 如何冲出重重包围?  
    }  
  }  
}  

break;只能跳出单层的循环,return将整个函数都返回了,没法再继续了,显然也不行,所以我们想到了goto。如果是在陷入了很深层次的循环里想要跳出最外层的循环,用 goto 直接跳出却比用 break 一个循环一个循环地跳出要好得多。

posted @ 2018-04-05 09:31  刘-皇叔  阅读(775)  评论(0)    收藏  举报