continue、break的用法与区别

news/2024/11/24 20:46:05/

continue、break的用法与区别(Java语言等)
介绍一些语言中的break、continue的用法与区别
1/5、break语句可以用于switch、for、while、do-while,用于结束最近一层。如果是两层循环则只能跳出最近的一层循环。
如下的例子:
计算0~9的和,分成for和do-while来计算,主要的目的是展示break的用法。
#include<stdio.h>
#include<stdlib.h>
void main()
{//0~9的和
int i,sum=0;
for(i=0;i<10;i++)
{if(i==5)break;
sum+=i;
}
printf(“%d\n”,sum);
//再5~9的和
do{
if(i>=10)break;
sum+=i;
i++;
}while(i<10);
printf(“%d\n”,sum);
system(“pause”);
}

2/5、continue语句可以用于for、while、do-while。对比break少了switch。continue用于跳转到最近一层循环体的结尾,然后再执行循环判断条件;简单地说就是跳过本次循环,继续下一个循环。
#include<stdio.h>
#include<stdlib.h>
void main()
{//0~9的和
int i,sum=0;
for(i=0;i<10;i++)
{ if(i10)continue;// if(i!=10)continue;
sum+=i;
}
printf(“sum=%d\ti=%d\n”,sum,i);
system(“pause”);
}
, ,
3/5、break语句还可以接标签。带标签的break可以结束任意层的switch、for、while、do-while语句。普通的break只能结束最近的一次。
如下程序,break两层、三层循环。
#include<stdio.h>
#include<stdlib.h>
void main()
{//0~9的和;(没有break,则和为220)
int i,k,j,sum=0;
for(i=0;i<2;i++)
{
for(k=0;k<2;k++)
{
for(j=0;j<=10;j++)
{
if(j
10)break;
sum+=j;
}
printf(“i=%d\tk=%d\tj=%d\tsum=%d\n”,i,k,j,sum);
}
}
printf(“i=%d\tk=%d\tj=%d\tsum=%d\n”,i,k,j,sum);
system(“pause”);
}

#include<stdio.h>
#include<stdlib.h>
void main()
{//0~9的和;( 没有if(j10)break;,则和为220)
int i,k,j,sum=0;
for(i=0;i<2;i++)
{
for(k=0;k<2;k++)
{
for(j=0;j<=10;j++)
{
// if(j
10)break;
sum+=j;
}
printf(“i=%d\tk=%d\tj=%d\tsum=%d\n”,i,k,j,sum);
}
}
printf(“i=%d\tk=%d\tj=%d\tsum=%d\n”,i,k,j,sum);
system(“pause”);
}

4/5、continue语句也可以接标签。带标签的continue可以跳转到任意层循环体的结尾。普通的continue语句只能跳转到最近一层的循环体的结尾。
如下程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{ //没有continue,则和为100
//有continue时,则和为80
//当i=0时:j=0时,sum=0;j=1时,sum=1;j=2时,就跳转到下一次的循环了,也就是每次j循环sum只是加了1;j=3时,sum是加了3;j=4时,sum是加了4;即每次外循环,sum一共加了8(0+1+3+4=8),此时sum=8;
//同理,i=1时:sum一共又加了8,此时sum=28=16;
//同理,i=2时:sum一共又加了8,此时sum=3
8=24;
//…
//同理,i=9时:sum一共又加了8,此时sum=10*8=80;
int i,j,sum=0;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
if(j2)continue;//if(j2)continue;
sum+=j;
}
}
printf(“i=%d\tj=%d\tsum=%d\n”,i,j,sum);
system(“pause”);
}
,
5/5、总之:break用于结束switch、for、while、do-while,而continue用于跳转到for、while、do-while循环体的结尾。

C语言break和continue语句的用法
break和continue语句都可以用在循环中,用来跳出循环(结束循环);break语句还可以用在switch语句中,用来跳出switch语句。

break语句

break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch 中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
【例6-8】
#include<stdio.h>
#include<stdlib.h>
void main()
{ int i=0;
char c;
while(1)
{ /设置循环/
c=‘\0’;/变量赋初值/
while(c!=13 && c!=27)
{/键盘接收字符直到按回车或Esc键/
c=getchar();
printf(“%c\n”,c);
}
if(c==27)
break;/判断若按Esc键则退出循环/
i++;
printf(“The No. is %d\n”,i);
}
printf(“The end”);
system(“pause”);
}

注意:
break语句对if-else的条件语句不起作用;
在多层循环中,一个break语句只向外跳一层。

continue 语句
continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。对比一下break和continue。while的用法:while(表达式1){ …… if(表达式2) break; ……}continue的用法:while(表达式1){ …… if(表达式2) continue; ……}【例6-9】复制纯文本新窗口
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char c=‘\0’;
while(c!=13)
{/不是回车符则循环/
c=getchar();
if(c==0X1B)
continue;/若按Esc键不输出便进行下次循环/
printf(“%c\n”,c);
}
system(“pause”);
}

Java中break、continue、return语句的使用区别
这篇文章主要介绍了Java中break、continue、return语句的使用区别对比,本文用非常清爽简明的语言总结了这三个关键字的使用技巧
break、continue、return之间的区别与联系 在软件开发过程中,逻辑清晰是非常之重要的。 代码的规范也是非常重要的。往往细节决定成败。在编写代码的时候,一定要理解语言的作用以及使用的方法和场景。下面来介绍一下break、continue、return三者的区别和联系。

  1. break :
    (1).结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。 (2).只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。[逐层判断,逐步跳出] (3).break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。 (4).当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。 总的来说:就近原则,结束当前的整个循环。
  2. return:
    (1).return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。 (2).return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。 (3). return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。
  3. continue:
    (1).终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。 (2).结束当前循环,进行下一次的循环判断。 (3).终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行.

http://www.ppmy.cn/news/221524.html

相关文章

Lexar雷克沙新品上市 | 这一抹白色我们称之为雷神铠 OC DDR4 UDIMM

Lexar雷克沙新品上市 | 这一抹白色我们称之为雷神铠 OC DDR4 UDIMM 从某种意义上来说&#xff0c;白色有着“永不过时且高贵纯洁”的特性&#xff0c;白色内存亦是如此&#xff0c;它的存在&#xff0c;虽不是电脑硬件领域里的新鲜物&#xff0c;但每每与白色主板搭配&#xff…

lex 常用函数

yyleng 只要扫描程序匹配标记时&#xff0c;标记的文本就存储在以空字符终止的字符串yytext中&#xff0c;而且它的长度存储在yyleng中&#xff0c;yyleng中的长度与由strlen(yytext)返回的值是相同的。 yyless() 从与规则相关的代码中调用yyless(n)&#xff0c;这条规则推回除…

Lex学习笔记——规范

lex是构建词法分析程序的工具&#xff0c;词法分析程序把随机输入流标记化&#xff08;tokenize&#xff09;&#xff0c;即&#xff0c;将它拆分成词法标记。当编写lex规范时&#xff0c;可以创建lex匹配输入所用的一套规则。每次匹配一个模式时&#xff0c;lex程序就调用你提…

32线镭神雷达跑LeGO-LOAM:3D 激光SLAM

32线镭神雷达跑LeGO-LOAM&#xff1a;3D 激光SLAM 安装LeGO-LOAM镭神雷达的相关修改LeGO-LOAM的修改修改utility.h修改imageproject.cpp Enjoy youself跑rosbag实时在线建图 序 最近老板给了个镭神的32线雷达让我搞一下3D SLAM&#xff0c;决定跑一下LeGO-LOAM。但是LeGO-LOAM…

xorl %eax, %eax

这是GNU的汇编 xorl %eax, %eax&#xff08;这句起什么作用&#xff09; 按位异或&#xff0c;相同的位置为0&#xff0c;不同的位置为1&#xff0c;eax和eax的每一位都相同&#xff0c;所以相当于清零。 movl 8(%ebp), %ecx testl %ecx, %ecx&#xff08;这句起什么作…

lex(flex)yacc(bison)

初始配置 文法分析用Flex(Lex):将数据分隔成一个个的标记token (标示符identifiers&#xff0c;关键字keywords&#xff0c;数字numbers, 中括号brackets, 大括号braces, 等等etc.)语法分析用Bison(Yacc): 在分析标记的时候生成抽象语法树. Bison 将会做掉几乎所有的这些工作, …

Windows下安装lex(flex)与yacc(bison)

上完第一节编译原理&#xff0c;Mr李要求这周自己探索一下lex和yacc这两个工具。 查了一下lex与yacc是两个在Unix下的分别作词法分析和语法分析的工具&#xff0c;都说很强大。而他俩在linux下又有对应的东西叫flex与bison。虽然硬盘上装了ubuntu但是不怎么用&#xff0c;linu…

ElasticSearch7.X和ElasticSearch8.X学习记录

ElasticSearch7 倒排索引 数据写入时&#xff0c;建立关键字和主键的映射&#xff0c;查询时–>关键字–>主键–>对应文章 分片 因为ES是以检索为主的产物&#xff0c;为了便于查询&#xff0c;会将数据进行分片&#xff0c;例如:根据性别分片&#xff0c;当查询女…