C++中使用goto循环

C++中使用goto循环

在程序中,当我们需要重复执行现有的代码的时候,循环就派上了用场。

顾名思义, goto 指示跳到代码的特定位置继续执行,您可使用它回过头去再次执行特定的语句。

goto 语句的语法如下:

cpp 复制代码
SomeFunction()
{
    Start: // Called a label
    CodeThatRepeats;
    goto Start;
}

这里声明了一个名为 Start 的标签, 并使用 goto 跳转到这个地方, 如下面的示例程序所示。 除非给 goto 语句指定在特定情况下将为 false 的执行条件,或者重复执行的代码中包含在特定条件下将被执行的 return 语句,否则 goto 命令和标签之间的代码将无休止地执行下去,导致程序永不结束。

cpp 复制代码
#include <iostream>
using namespace std;

int main()
{
    Start:
    int Num1 = 0, Num2 = 0;

    cout << "Enter two integers: " << endl;
    cin >> Num1;
    cin >> Num2;

    cout << Num1 << " x " << Num2 << " = " << Num1 * Num2 << endl;
    cout << Num1 << " + " << Num2 << " = " << Num1 + Num2 << endl;

    cout << "Do you wish to perform another operation (y/n)?" << endl;
    char repeat = 'y';
    cin >> repeat;

    if (repeat == 'y')
        goto Start;

    cout << "Goodbye!" << endl;

    return 0;
}

输出:

复制代码
Enter two integers:
56
25
56 x 25 = 1400
56 + 25 = 81
Do you wish to perform another operation (y/n)?
y
Enter two integers:
95
-47
95 x -47 = -4465
95 + -47 = 48
Do you wish to perform another operation (y/n)?
n
Goodbye!

程序清单 6.7 和程序清单 6.1 的主要差别在于,要让用户再次输入一组数字,并查看加法或乘法运算的结果,需要再次运行程序清单 6.1,而程序清单 6.7 不需要这样,它询问用户是否想再执行一次运算。实际实现这种重复的代码位于第 20 行,它在用户输入表示 yes 的字符 y 时执行 goto 语句。执行第 20 行的 goto 语句将导致程序跳转到第 5 行声明的标签 Start 处,这相当于重新启动程序。

警告:

复制代码
不推荐使用 goto 语句来编写循环,因为大量使用 goto 语句将导致代码的执行流程无法
预测,即不按特定的顺序从一行跳转到另一行;在有些情况下,也可能导致变量的状态无法预测。
糟糕地使用 goto 语句将导致意大利面条式代码。要避免使用 goto 语句,可使用接下来
将介绍的 while、 do...while 和 for 循环。
这里介绍 goto 语句只是为了帮助您理解使用这种语句的代码。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,

分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,

fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,

TCP/IP,协程,DPDK等技术内容

点击立即学习:C/C++后台高级服务器课程

相关推荐
Cx330❀5 分钟前
【优选算法必刷100题】第43题(模拟):数青蛙
c++·算法·leetcode·面试
闻缺陷则喜何志丹5 分钟前
【C++动态规划 状压dp】1879. 两个数组最小的异或值之和|2145
c++·算法·动态规划·力扣·数组·最小·动态规范
艾莉丝努力练剑10 分钟前
【优选算法必刷100题:专题五】(位运算算法)第033~38题:判断字符是否唯一、丢失的数字、两整数之和、只出现一次的数字 II、消失的两个数字
java·大数据·运维·c++·人工智能·算法·位运算
xiaolongmeiya26 分钟前
P7082 [NWRRC 2013] Dwarf Tower 完全背包
c++
2401_8762213435 分钟前
因数个数、因数和、因数积
c++·算法
十五年专注C++开发37 分钟前
VS2019编译的C++程序,在win10正常运行,在win7上Debug正常运行,Release运行报错0xC0000005,进不了main函数
开发语言·c++·报错c0x0000005
fy zs1 小时前
网络编程套接字
linux·服务器·网络·c++
fpcc1 小时前
模板编程—模板和元编程中的错误输出
c++·模板编程
xie_pin_an1 小时前
C++ 类和对象全解析:从基础语法到高级特性
java·jvm·c++
小温冲冲1 小时前
C++与QML信号绑定完全指南:实现跨语言无缝通信
c++