问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么都不建议用goto语句进行跳转呢?我觉得挺方便啊!

发布网友 发布时间:2022-04-30 03:59

我来回答

5个回答

热心网友 时间:2023-10-10 21:28

GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。
有人认为GOTO语句使用起来比较灵活,而且有些情形能提高程序的效率。
1974年,D·E·克努斯对于GOTO语句争论作了全面公正的评述,其基本观点是:不加*地使用GOTO语句,特别是使用往回跳的GOTO语句,会使程序结构难于理解,在这种情形,应尽量避免使用GOTO语句。但在另外一些情况下,为了提高程序的效率,同时又不至于破坏程序的良好结构,有控制地使用一些GOTO语句也是必要的。用他的话来说就是:“在有些情形,我主张删掉GOTO语句;在另外一些情形,则主张引进GOTO语句。”
后来,G·加科皮尼和C·波姆从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉GOTO语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰。
goto语句的结果:在C/C++等高级编程语言中保留了goto语句,但被建议不用或少用。在一些更新的高级编程语言,如Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使 用,使程序简洁易读;尽管如此后来的c#还是支持goto语句的,goto语句一个好处就是可以保证程序存在唯一的出口,避免了过于庞大的if嵌套。
可以考虑使用goto的情形:1.从多重循环中直接跳出 ;2. 出错时清除资源; 3.可增加程序的清晰度的情况。
不加*地使用goto:破坏了清晰的程序结构,使程序的可读性变差,甚至成为不可维护的"面条代码"。经常带来错误或隐患,比如它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。
goto语句问题的提出直接推动了结构化程序设计(structured programming)的思想和程序设计方法学的诞生和发展。结构化程序设计方法引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,*使用goto语句。
下列关于使用goto语句的原则可以供读者参考。   1) 使用goto语句只能goto到同一函数内,而不能从一个函数里goto到另外一个函数里。   2) 使用goto语句在同一函数内进行goto时,goto的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。   3) 不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。   4)应该避免像两个方向跳转。这样最容易导致"面条代码"。

热心网友 时间:2023-10-10 21:29

GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。

goto语句的结果:在C/C++等高级编程语言中保留了goto语句,但被建议不用或少用。在一些更新的高级编程语言,如Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使 用,使程序简洁易读;尽管如此后来的c#还是支持goto语句的,goto语句一个好处就是可以保证程序存在唯一的出口,避免了过于庞大的if嵌套。

goto语句

goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。

如: label: i++;

loop: while(x<7);

C语言不*程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句。

goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。

热心网友 时间:2023-10-10 21:29

因为老手经过写很多代码发现,同一个程序随着goto语句的使用次数增多,它的逻辑就会成指数上升,人脑是看不懂它的逻辑,哪怕前一秒是自己写的,后一秒就不知它跑哪去了。当然你在一个程序用一个两个还是可以的(别听书上瞎说,其实我认为你偶尔做书上不建议的事也许会有意想不到的收获),挺方便的(但注意,要自己控制goto数量,多了你会后悔的)。

热心网友 时间:2023-10-10 21:30

一句话来讲:容易造成逻辑与程序流程的混乱,降低代码的可读性、可维护性。
少量的Lable是很方便,不过如果你依赖上了这个语句,Lable一多,goto来goto去的很容易把自己转懵。尤其当你跟别人合作撸码的时候,容易挨揍啊。

热心网友 时间:2023-10-10 21:30

神马语言?
goto定义不精确,关键是在后面差错的时候不好弄。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
街头篮球手游中锋攻略汇总 C位攻略大全 街头篮球手游中锋有什么技巧 中锋C技巧详解 php一个表单提交数据怎么区分开,隐藏域可以吗,如果可以怎么用。 梦见牙掉光了什么预兆 梦见牙齿掉完了是什么征兆 梦见牙齿全掉了是什么预兆 梦见一口牙全部掉了是什么预兆 教师年度考核不认课的领导班子成员,干的工作不少,怎样考核办法公平... 湖北省郧西县义务教育学校绩效工资实施办法绩效工资总量和水平的... 事业单位年底是否有绩效奖金的 为什么说GOTO有害? 在python中怎么实现goto功能 为什么说goto是一种不好的用法? goto语句的发展历程 Goto的发展历程 中国移动智能机顶盒能看电视直播吗 移动wifl盒子能看电视直播吗 天津高考化学考哪几本书?据说改版5本了,具体高一学什么高二学什么高三学什么? 高考化学考90分难吗 高考化学常考的知识点有哪些? 你好,高中高考化学考哪些书? 钉钉上针对老师不让点赞仍一直点赞的同学的做法表达你的看法? 高考化学考什么 高考化学考了70分能赋分多少? 高考化学常考到哪些知识?公式?化学式? 连接车载蓝牙电话,对方听不清楚我说话 车载蓝牙耳机打电话对方总听到杂音 接电话有噪音是什么问题? 车载蓝牙听歌正常,打电话声音小,听不清,变声,卡顿是什么原因 车载蓝牙打电话噪音? 为什么goto跳到错误的位置 c#有没有办法执行goto后,执行goto指向的代码,执行完后再回到goto去执行goto下方的语 单片机C语言的goto语句可以用来跳出中断程序么? howdoyougotoschool是什么意思 c#问题,关于goto 语句 为什么不赞成使用goto语句(C语言) waystogotoschool是什么意思 为什么用do while(0) 替换goto gotostudy短文80词左右用英语 在QQ上开通超级会员得多少钱? gotothesupermarket中文是什么? 电子秤单位怎么换算 万达的回转寿司怎么样 厦门万达广场美食哪个好吃啊? 王思聪怒斥上海一家网红店恶心,这家店到底存在哪些问题? 佳木斯最好吃的日本料理是哪家? 江阴万达广场有几家日本料理店?消费情况怎么样?要是能有一些主食推荐什么的就更好了谢谢!!!! 揭阳万达广场有什么好吃的 福州仓山万达有什么好吃的? 荆门市区万达广场附近有啥酒店和美食可以推荐下?