C语言是按顺序执行语句的语言——一个接一个。即使它有条件语句或循环语句,程序的流程也是自上而下的。没有顺序流的随机跳转或跳转。但我们的程序是为了满足任何现实世界的需求,一个接一个地执行永远不会很直接。在某些情况下,我们必须偏离代码的正常顺序流,必须跳转到下一个语句集执行。这可以通过使用break、continue和goto语句来实现。
Break语句用于在没有任何条件的情况下停止代码的正常执行,它将跳出当前执行循环。我们可以使用条件来检查是否必须中断,但这些条件不是break语句的一部分。我们可以用if语句。例如:
#include<stdio.h> int main(){ int num=1; while(1){ printf("%d",num++); if(16==num){ break; } } return 0; }
当我们执行循环时,为了输出前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=1;num<5;num++){ if(3==num){ continue; } printf("%d\n",num); } return 0; }
当执行的if语句为true时,continue执行到for循环的表达式3 num++ 跳过了打印3的语句 执行下一次循环
在例如
#include<stdio.h> int main(){ int i=0; for(;i<=10; ){ if(i%2==0){ printf("%d",i); }else{ continue; } i++; } return 0; }
这个只打印一个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 0; }
在这个程序中,我们有两个具有返回类型的函数,但是只有一个函数返回值[func()],而另一个函数只是用来终止函数[main()]。函数func()返回给定数字的字符值(这里是65)。我们还看到func()的返回类型为char,因为它返回一个字符值。
函数的返回值为零,因为main的返回类型为int,所以这里必须有一个返回值。
原文地址:https://www.cnblogs.com/lc-bk/p/11072733.html