C++之break / continue陈述九州地址QA98嚸CC语言

break陈述

关键字 break 用于跳出 switch 陈述或跳出回圈。

以下程式示范switch陈述中使用break

复制代码
#include <iostream>
  
int main() {
    int data = 0;
    
    switch (data) {
        case 0:
            std::cout << "0" << std::endl;
            
        case 1: case 2:
            std::cout << "12" << std::endl;
            break;
            
        case 5:
            std::cout << "5" << std::endl;
    }
    
    return 0;
}

编译后执行,结果如下

复制代码
$ g++ u0507_1.cpp
$./a.out 复制代码
0
12
$

此例在case 1、case 2之后使用break陈述

复制代码
case 1: case 2:
    std::cout << "12" << std::endl;
    break;

由于0就符合选项,使得执行完case 0的部份后,由于这里没有break陈述,因此程式会继续执行底下所有的陈述,直到遇上break或到右大括弧为止。

以下程式示范在回圈中使用break

复制代码
#include <iostream>
  
int main() {
    int i;
    for (i = 0; i < 10; i++) {
        if (i == 5) {
            break;
        }
        
        std::cout << i << std::endl;
    }
    
    return 0;
}

编译后执行,结果如下

复制代码
$ g++ u0507_2.cpp
$./a.out 复制代码
0
1
2
3
4
$

这里利用if判断控制变数i是否等于整数5,若是等于5就用break跳出for回圈,因此输出只有印到4为止。

continue陈述

关键字 continue可于回圈中暂停执行一次,然后进行下一轮。回圈碰到continue就像直接跳到回圈最后右大括弧的地方,接着重新进行回圈的结束条件测试,如果测试结果为真,那么回圈继续进行。

举例如下

复制代码
#include <iostream>
  
int main() {
    int i;
    for (i = 0; i < 10; i++) {
        if (i == 5) {
            continue;
        }
        
        std::cout << i << std::endl;
    }
    
    return 0;
}

编译后执行,结果如下

复制代码
示例代码:
$./a.out 复制代码
0
1
2
3
4
6
7
8
9
$

此例在for回圈中测试控制变数i是否等于5,如果等于5就执行continue,因此印出结果中没有数字5。

使用continue需要留意控制变数的调整,我们将上例改用while回圈如下

复制代码
#include <iostream>
  
int main() {
    int i = 0;
    while (i < 10) {
        if (i == 5) {
            continue;
        }
        
        std::cout << i << std::endl;
        
        i++;
    }
    
    return 0;
}

由于控制变数i等于5的时候就会执行continue,但是continue之前没有调整控制变数值,结果造成i永远等于5,回圈结束条件永远为真

复制代码
$ g++ u0508_2.cpp
$./a.out 复制代码
0
1
2
3
4
_

这造成一个无穷回圈(infinite loop) ,如同程式当掉不会结束执行,因此要利用按Ctrl + c或其他方式强制结束程式执行。

相关推荐
Sylvia33.22 分钟前
火星数据体育API|一站式接入足球篮球电竞等18+项目实时数据
java·开发语言·python·websocket·游戏
Data_Journal1 小时前
使用 AutoScraper 进行网页抓取:分步教程
大数据·开发语言·数据库·python·scrapy
CodeRecycle1 小时前
Python 自动配置 pip 支持库(通过 Windows Bat 脚本)
算法
yume_sibai1 小时前
12-Rust 性能优化指南(性能分析 + 内存优化 + SIMD + 并发优化 + 编译器优化 + 基准测试)
开发语言·性能优化·rust
liliangcsdn1 小时前
特质偏度因子的计算示例和分析
算法
萧瑟余晖1 小时前
Hibernate 核心原理与架构详解
开发语言·架构·hibernate
爱喝水的鱼丶1 小时前
SAP-ABAP:SAP MM 模块物料主数据批量导入与增强开发:字段扩展、校验逻辑与批量导入工具开发
开发语言·性能优化·sap·abap·增强·经验交流·mm
geovindu1 小时前
rust:Builder Pattern
开发语言·设计模式·rust·建造者模式
白远山1 小时前
健身场馆无人自动化解决方案:从架构到落地实践
java·开发语言·数据库·数据挖掘·需求分析
荆棘鸟智能2 小时前
无人机遥感图像实时拼接算法工程实践:从特征提取到全景融合的完整技术链路
算法·无人机