c++中goto到底有什么弊端

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:;
} 

有什么问题评论区问我。

注:这只是本人的个人观点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值