C/C++中的goto语句
时间:2020-02-23 14:29:58 来源:igfitidea点击:
像C和C++这样的编程语言提供了无条件使用goto语句跳过语句的规定。
尽管goto语句的用法几乎已绝迹,但它是程序员的便利工具。
在本文中,我们将介绍goto语句的语法和用法。
C/C++中goto语句的语法
基本语法涉及两个语句-跳转的开始和目的地。
//Jump to label = abcd //Initiation goto abcd; ... ... ... //label = abcd //Destination abcd:
在上面的代码片段中,标签被命名为" abcd"。
因此,如果我们需要跳转到标签,我们将编写" goto abcd"。
类似地,我们可以使用goto
语句跳转到代码的前一行:
//label = abcd //Destination abcd: ... ... ... //Jump to label = abcd //Initiation goto abcd;
除了语法外,启动和目的地的goto
语句必须存在于同一函数中。
简而言之,我们不能使用goto命令在函数之间转换。
goto语句的应用
经典的goto
语句有许多用途。
让我们逐一探讨它们。
1. goto作为跳转跳板
goto语句的基本优点之一是无需任何努力即可绕过某些代码行的能力。
#include<iostream> using namespace std; int main(){ //Name and Age string name = "luffy"; int age = 17; getAadharCard(); //If less than 18 years, skip other identification if(age < 18) //Goto jump initiation goto end; getPanCard(); getVoterId(); getDrivingLicense(); //Goto Jump Destination end: return 1; }
" goto"语句乍一看似乎是个小孩子的游戏,但是它很容易用一小段代码带来复杂性。
2. goto语句作为循环
在发明for和while循环之前,goto语句是所有程序员的首选语句。
但是,使用" goto"会使程序变得复杂,因此不鼓励使用它。
#include<iostream> using namespace std; int main(){ //Iterator int i = 0; //Label name = loop //Label destination loop: cout<<i<<endl; //Loop updation i++; //Condition for the loop if(i < 5) //Label initiation goto loop; return 1; }
输出:
0 1 2 3 4
主函数中代码的逻辑流程如下:
- 迭代器的初始化–" int i = 0;"
- 打印迭代器–
cout << i << endl;
- 迭代器的增量–
i ++;
- 条件语句检查–" if(i <5)"
- 跳转到label = loop的Goto语句– goto loop;
- 标签目标–循环:
- 打印迭代器–
cout << i << endl;
- 然后继续……。
简而言之,代码的执行将正常进行,直到遇到" goto"语句。
但是,当遇到goto
时,代码流跳到goto
提到的标签。
3. Goto语句作为中断
单个break
语句可以结束单个循环。
因此,为了突破多个循环,我们需要条件和多次中断。
通过使用goto
语句可以简化这种完成多个循环的代码密集型方法。
#include<iostream> using namespace std; int main(){ //2D Array int arr[][3] = {{0, 0, 1}, {0, 1, 0}, {1, 0, 1}}; //Number of rows int r = sizeof(arr)/sizeof(arr[0]); //Outer loop for rows for(int i=0; i<r; i++){ //Inner loop for values for(int j=0; j<3; j++){ //Condition if 1 is encountered if(arr[i][j] == 1) //Goto Jump Initiation goto out; } } //Goto Jump destination out: return 1; }
程序员中断多个循环变得非常方便。
尽管在代码审查期间,goto
语句可能会使审查者措手不及。