为什么不提倡使用goto语句?

都说goto不遵循结构化程序设计的思想,可读性差,但是我到现在也没有理解透了为什么这样说,我有时候觉得goto还挺灵活的。有什么简单的实例可以对照说明为什么不提倡使用go... 都说goto不遵循结构化程序设计的思想,可读性差,但是我到现在也没有理解透了为什么这样说,我有时候觉得goto还挺灵活的。

有什么简单的实例可以对照说明为什么不提倡使用goto语句么?
展开
 我来答
gcbjoy
2015-11-17 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:92%
帮助的人:2157万
展开全部
goto语句即转移指令,是将cpu的当前的指令指针ip直接更改为goto语句指向的指令地址,然后从该地址继续往后执行。从汇编语言的角度来说,goto语句对应汇编语言的jmp指令,但汇编语言的危险在于jmp指令的跳转是不受约束或约束较少,机器指令级级别是可以随意跳转的,除非在执行前对指令进行严格检查,这其实是非常困难的。

早期的算法语言,比如fortran、pascal、basic等都支持goto语句,因为那时的语句较少,分支结构、循环结构需要借助goto语句实现。但这些高级语言对goto语句做了严格的限制,比如:(1)可以从一个结构(条件、循环)内部跳到外部,反之则不允许;(2)不允许从子程序中直接跳出,而要采用类似return的返回语句退出子程序,当然从主程序跳入子程序是绝对禁止的;等等。这些限制对现代还支持goto语句的算法语言仍然起作用。

随着语言的结构化、模块化,有些高级语言已经不再支持goto语句。这样做是为了程序的易读、易懂,便于代码的维护。
xujmhw6
推荐于2017-09-01 · TA获得超过1084个赞
知道大有可为答主
回答量:1261
采纳率:84%
帮助的人:355万
展开全部
目前的编程语言都采用结构化语言,在结构化程序设计中一般不主张使用goto语句,原因为
1、在程序比较简单是用goto语句是比较灵活,但是当程序比较复杂时很容易造成程序流程的混乱。
2、利用goto语句对以后的后别人看程序是很难理解。
3、调试程序的过程也会变得很困难。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpp门徒
推荐于2017-09-07 · TA获得超过620个赞
知道小有建树答主
回答量:276
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>

int main()
{
int i = 10, s = 0;
Goto0:
s += i;
i--;
if ( i != 0 )
{
goto Goto0;
}
printf ("s = %d\n", s);
return 0;
}



#include <stdio.h>

int main()
{
int i = 10, s = 0;
while ( i )
{
s += i;
i--;
}
printf ("s = %d\n", s);
return 0;
}

一个跳来跳去,一个从上往下,你说哪个烦。大项目里面如果几个for循环一个goto跳出来,烦死你。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaohuh421
2010-03-20 · TA获得超过904个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:377万
展开全部
这个你就要先理解什么叫"结构化程序设计"

你现在可能没有编写代码较长的程序,
当代码很长后,别人要读取你的代码,
你试想下,如果是没有"goto",别人可以一路顺序的读取下去,
但当你程序里面有很多"goto"后,别人读取的时候就会不停的去找你的goto目的地,不停的上翻下翻.
说得更直接点,如果你用od随便加载个程序,看看反汇编代码,你就会看到有很多JNE,JMP...这类的类似goto语句的东西,你就知道为什么要少用或者不用goto了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暴雁菱0e1
2010-03-20 · TA获得超过2003个赞
知道小有建树答主
回答量:1192
采纳率:0%
帮助的人:0
展开全部
简单的程序用用goto没什么问题,如果大的项目的话,可读性就会很差,不利于维护
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式