首页 > 编程笔记 > C++笔记 阅读:21

C++ goto语句的用法(附带实例)

C++goto 语句又称为无条件跳转语句,用于改变语句的执行顺序。

goto 语句的一般格式如下:
goto 标签;
其中,标签是用户自定义的一个标识符。goto 语句可将程序跳转到由“label:”代码定义的标签处继续执行。

【实例】计算 1~10 的累加和。使用 if 语句判断变量是否小于 10,如果小于就用 goto 语句跳转到标签 label 处,使变量进行累加并自增。具体代码如下:
#include <iostream>
using namespace std;
int main()
{
    int i=0 ;              //sum 表示累加和,i 控制循环
    int sum=0;
    label:                //定义标签,goto 语句跳转至此
    i++;
    sum += i;             //计算累加和
    if (i<10)             //如果 i 小于或等于 10
    {
        goto label;       //goto 语句,跳转至标签处
    }
    cout << "the result :" << sum << endl;
}
运行结果为:

the result :55

程序中,通过 goto 语句和标签实现了一定的循环功能。当语句执行到“if (i<10)”时,如果条件成立,就跳转到标签“label:”处,再一次执行循环变量 i 的自增运算和累加求和运算。当 i 自增至 10 时,计算完累加和,发现“if (i<10)”条件不满足,不再跳转,而是输出累加和计算结果。

使用 goto 语句时的注意事项如下:
1) 定义标签时,其后不能紧跟“}”。例如,下面的程序代码是非法的:
{
    ...
    label:                //定义标签,goto 语句跳转至此
}
上述代码中,标签后没有执行代码,因此会出现编译错误。解放方法为:补充对应的执行代码。

2) goto 语句不能跳过除复合语句外的其他变量定义语句。例如,下面代码中 goto 语句试图跳过变量 i 的定义语句,导致编译错误。
goto label;              //goto 语句
int i = 10;              //变量 i 的定义语句
label:                   //定义标签,goto 语句跳转至此
    cout<<"goto"<<endl;
解决方法为:将变量定义放在复合语句中。
goto label;              //goto 语句
{
    int i = 10;           //变量 i 的定义语句
}
label:                   //定义标签,goto 语句跳转至此
    cout<<"goto"<<endl;
注意,goto 语句是一种古老的跳转语句,会使程序的执行顺序变得混乱,CPU 执行效率也较低。因此,实际开发中要慎用 goto 语句。

相关文章