C++之goto陈述

关键字 goto用于控制程式执行的顺序,使程式直接跳到指定标签(lable) 的地方继续执行。

形式如下

标签可以是任意的识别字,后面接一个冒号。

举例如下

#include <iostream>
  
int main() {
    goto label_one;
    
    label_one: 
    {
        std::cout << "Label One" << std::endl;
        goto label_two;
    }
    
    label_two:
    {
        std::cout << "Label Two" << std::endl;
        goto label_three;
    }
    
    label_three:
    {
        std::cout << "Label Three" << std::endl;
    }
    
    return 0;
}

编译后执行,结果如下

$ g++ u0509_1.cpp
$./a.out 复制代码
标签一
标签二
标签三
$

此例按标签的顺序,在每个标签下方都用大括弧围住一个程式区块,goto到了指定标签,就会执行标签下方的程式区块

label_one: 
{
    std::cout << "Label One" << std::endl;
    goto label_two;
}

概念满简单的,上面利用标签顺序执行,下面我们另举一个例子,使goto具有回圈的效果

#include <iostream>
  
int main() {
    int i = 1;
    if (i < 10) {
        goto label_one;
    }
    
    label_one:
    {
        std::cout << "Label One" << std::endl;
        goto label_three;
    }
    
    label_two:
    {
        std::cout << "Label Two" << std::endl;
    }
    
    label_three:
    {
        std::cout << "Label Three" << std::endl;
        i++;
        if (i < 10) {
            goto label_two;
        }
    }
    
    return 0;
}

编译后执行,结果如下

$ g++ u0509_2.cpp
$./a.out 复制代码
标签一
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
$
相关推荐
秀儿还能再秀2 分钟前
机器学习:梯度提升树(GBDT)——基于决策树的树形模型
算法·决策树·机器学习·学习笔记·梯度提升树
yangpipi-4 分钟前
数据结构(C语言版)-2.栈和队列
c语言·开发语言·数据结构
还在学习进步7 分钟前
C语言第九周课——经典算法
c语言·开发语言·算法
阿七想学习9 分钟前
数据结构《链表》
java·开发语言·数据结构·学习·链表
Yaml410 分钟前
Java的六大排序
java·算法·排序算法
极客代码11 分钟前
【Python TensorFlow】进阶指南(续篇二)
开发语言·人工智能·python·深度学习·tensorflow
计算机学姐25 分钟前
基于Python的高校成绩分析管理系统
开发语言·vue.js·后端·python·mysql·pycharm·django
VertexGeek26 分钟前
Rust学习(三):rust基础Ⅱ
开发语言·学习·rust
九年义务漏网鲨鱼32 分钟前
【人脸伪造检测后门攻击】 Exploring Frequency Adversarial Attacks for Face Forgery Detection
论文阅读·python·算法·aigc
一个数据小开发32 分钟前
业务开发问题之ConcurrentHashMap
java·开发语言·高并发·map