C语言是按顺序执行语句的语言——一个接一个。即使它有条件语句或循环语句,程序的流程也是自上而下的。没有顺序流的随机跳转或跳转。但我们的程序是为了满足任何现实世界的需求,一个接一个地执行永远不会很直接。在某些情况下,我们必须偏离代码的正常顺序流,必须跳转到下一个语句集执行。这可以通过使用break、continue和goto语句来实现。

Break语句用于在没有任何条件的情况下停止代码的正常执行,它将跳出当前执行循环。我们可以使用条件来检查是否必须中断,但这些条件不是break语句的一部分。我们可以用if语句。例如:

#include<stdio.h>
int main(){ int num=;
while(){ printf("%d",num++);
if(==num){
break;
}
}
return ;
}

当我们执行循环时,为了输出前15个自然数,我们必须给一个判断 跳出这个死循环,当if num ==16;成立时,break;直接跳出这个while循环

同样的的方法   break也来中断for  或do  while   循环

这个break语句也用于switch语句。由于switch语句在执行匹配的case语句之后不会中断执行,所以我们必须显式地使它中断。通过break执行。

continue类似于break语句,但是它不会跳出循环,而是停止执行当前迭代的循环体内部的set指令,并跳转到下一个迭代的循环体。

例如

#include<stdio.h>
int main(){ for (int num=;num<;num++){ if(==num){
continue;
}
printf("%d\n",num);
}
return ;
}

当执行的if语句为true时,continue执行到for循环的表达式3  num++  跳过了打印3的语句  执行下一次循环

在例如

#include<stdio.h>
int main(){
int i=;
for(;i<=; ){
if(i%==){
printf("%d",i);
}else{
continue;
}
i++;
}
return ;
}

这个只打印一个0;当i=1;执行continue跳转到表达式3 ,此时表达式为true  程序一直执行,但只打印一个0;

同样  continue 用在while ;do  while;中

Continue语句来中断当前执行并继续下一组迭代

goto  语句

该语句是无条件跳转语句。它可以在程序的任何地方使用,以便从当前执行跳转到代码中的其他行。一旦跳转到其他行,它将继续从那里依次执行代码。它不能返回到以前的执行行。为了表示它必须跳转的那条线,我们给这条线标上标签。goto语句的一般语法为:

goto   标号;

跳转标签可以在代码中的任何位置。要么在goto语句之前,要么在goto语句之后。标签存在于何处并不重要。

这种跳跃是无条件的。通常我们使用goto语句来处理错误。但这将降低代码的可读性,并给查看代码的人带来困惑。因此,始终建议在代码中减少goto语句的使用。并且会使程序执行起来相当混乱,cpu 需要不停的进行跳转,效率较低,因此在开发的程序的时候慎用。

return

这个跳转语句通常用于函数的末尾,以结束或终止带有或不带值的语句。它将控制从调用函数返回到主函数(主函数本身也可以有一个返回)。

需要考虑的重要一点是,return只能用于使用返回类型声明的函数,如int、float、double、char等。使用void类型声明的函数不返回任何值。此外,函数返回与声明的数据类型相同的值。下面是一个简单的例子,展示return语句是如何工作的。

#include <stdio.h>
char func(int ascii)
{
return ((char)ascii);
}
int main()
{
int ascii;
char ch;
printf("Enter any ascii value in decimal: \n");
scanf("%d",&ascii);
ch=func(ascii);
printf("The character is : %c\n",ch);
return ;
}

在这个程序中,我们有两个具有返回类型的函数,但是只有一个函数返回值[func()],而另一个函数只是用来终止函数[main()]。函数func()返回给定数字的字符值(这里是65)。我们还看到func()的返回类型为char,因为它返回一个字符值。
函数的返回值为零,因为main的返回类型为int,所以这里必须有一个返回值。

最新文章

  1. 表现层的设计(二)——MVC如何处理复杂的界面元素
  2. C 标准库系列之assert.h
  3. MVC 好记星不如烂笔头之 ---&gt; 全局异常捕获以及ACTION捕获
  4. python基础之基本算法和装饰器
  5. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课
  6. 【转】JAVA程序中Float和Double精度丢失问题
  7. installshield 32位打包和64位打包的注意事项
  8. 关于国产跨平台的开源游戏引擎LGame
  9. Segments POJ 3304 直线与线段是否相交
  10. Jenkins自定义主题
  11. 学习Python语言 基础语法:变量的基本使用
  12. JAVA 第九周学习总结
  13. C/C++判断传入的UTC时间是否在今天
  14. android 颜色值参考,(有颜色图
  15. 使用Android的OpenGL编写视频播放器
  16. 二、spark SQL交互scala操作示例
  17. 配置用户通过Telnet登录设备的身份认证(AAA本地认证)
  18. 操作BOM
  19. ubuntu 14.04安装nginx+php
  20. rest与restful

热门文章

  1. Linux下 为什么有时候使用sudo也提示没有权限
  2. 【解决方案】SpringCloud项目优雅发版、部署
  3. nessus在Linux上的安装
  4. jQuery中ajax如何返回值到上层函数
  5. 几种常见空间滤波器MATLAB实现
  6. Java设计模式: 单例模式
  7. android studio 错误汇总以及解决办法
  8. Android插件化技术——原理篇
  9. Jmeter BeanShell 引用变量报错Error or number too big for integer
  10. lua table操作