C++ goto语句的用法(附带实例)
C++ 的 goto 语句又称为无条件跳转语句,用于改变语句的执行顺序。
goto 语句的一般格式如下:
【实例】计算 1~10 的累加和。使用 if 语句判断变量是否小于 10,如果小于就用 goto 语句跳转到标签 label 处,使变量进行累加并自增。具体代码如下:
使用 goto 语句时的注意事项如下:
1) 定义标签时,其后不能紧跟“}”。例如,下面的程序代码是非法的:
2) goto 语句不能跳过除复合语句外的其他变量定义语句。例如,下面代码中 goto 语句试图跳过变量 i 的定义语句,导致编译错误。
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 语句。