goto有什么用?
goto的用法并不难理解,就是把代码直接跳转到目标处。
我们来看一个例子:
#include<iostream>
using namespace std;
int main(){
for(int i=0;i<10;i++){
goto s;
cout<<"123456"<<endl;
}
s:;
cout<<"456789"<<endl;
}
不会用goto的人可能以为会先输出10个123456,再输出456789,但是实际输出的只有456789。
因为在执行第一次循环的时候,还没输出123456就出现了goto,循环下面的s:就是运行到goto时跳转到的地方。所以没有输出123456。
goto有什么好处?
goto虽然曾经遭到无数人唾骂,但也并非没有可取之处。比较简单的用法就是在大型程序中跳出多层循环(例子见下一章)。
但是也不能算好用,因为goto不能跳过定义并初始化变量的语句,例子如下:
#include<iostream>
using namespace std;
int main(){
for(int i=0;i<10;i++){
goto s;
cout<<"123456"<<endl;
}
int n=0;
s:;
cout<<"456789"<<endl;
}
这样就会报错,内容如下:
解决这种问题的方法也是有的,就是先定义,再初始化:
#include<iostream>
using namespace std;
int main(){
for(int i=0;i<10;i++){
goto s;
cout<<"123456"<<endl;
}
int n;
n=0;
s:;
cout<<"456789"<<endl;
}
这样就能成功执行了。
goto有什么弊端?
大家都知道goto一直在被人骂,那它到底有什么弊端呢?
最明显的一点就是goto让代码变得非常乱,完全没有可读性。
论goto的错误用法:
#include<iostream>
using namespace std;
int main(){
s:;
int n=0;
for(int i=0;i<10;i++){
if(n==1){
goto s;
}
}
}
就这样的代码,不管它有没有报错,都非常难读,更别说几个goto一起用。
你要用goto,首先得保证自己能看得懂代码。
论goto的正确用法:
#include<iostream>
using namespace std;
int main(){
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
for(int k=0;k<10;k++){
goto s;
}
}
}
s:;
}
有什么问题评论区问我。
注:这只是本人的个人观点!