c语言goto语句缺点 首次提出goto语句有害的是谁

时间:2021-06-16 14:55:39 作者:admin 2444
c语言goto语句缺点 首次提出goto语句有害的是谁

C语言中的goto语句。为什么老师反复强调不能用?

谈goto色变,主要是goto太自由了,甚至比汇编语言的jump更自由,jump还要考虑长地址短地址等跳转,而goto根本没有任何限制,他可以直接从函数内部调到函数外部甚至其它函数的位置。这就牵扯到一个问题,我们都知道函数调用是保护当前上下文,也是当前执行堆栈和寄存器,一旦进入被调用函数的内部,堆栈和寄存器就全变了,如果函数内部再用goto到其它地方函数不再返回,程序肯定就全乱了,而且导致内存泄露。所以,使用goto必须要加限制条件1.函数内部goto只能goto到函数内部,保证函数能够返回到被调用的2.中断内部用goto也是一样,goto必须要能够保证中断正常返回,不然也会导致中断异常。总结,goto不推荐使用的原因主要是它可以不受任何条件限制,跳转到你想要去执行的地方,过于自由,但是是好事还是坏事取决于程序开发人员的设计是不是考虑得完善,是不是会导致这样那样的问题。

C语言goto语句问题:gotoloop与gotorepeat有什么区别吗?

没有区别goto 是跳转语句,后面是标识符,自己命名的.没什么特别含义,他这样写是为了区分,和让程序更加可读(这里可读是指标识符相对于无意义的字符,并不是说goto语句会是程序可读性更好,实际刚好相反).goto loop从语义上理解应该是跳转到某一个循环里面让人知道跳到那个地方去(即前面所谓的可读好)goto格式是asd:xxxxxxxxxxxxxxxxxxxxxgoto asd就是跳到asd重新在运行一次的意思,如果上面xxx中没有结束或者跳出的语句上面就会变成死循环.和while(1)一个意思一般程序中很少或根本不使用goto语句的,用了会很大的破坏可读性,和带来维护上的困难,所以不推荐使用

为什么在汇编语言中需大量使用跳转指令,而在C语言中却尽量避免使用goto语句呢?

C语言中尽量避免的不是goto,而是无条件使用goto。

汇编语言中是有大量跳转指令,但是那些不是无条件跳转,前面肯定都要有ifne,ifeq这些条件判断的。注意,在汇编语言的使用中,虽然有jump这些,但是也不是就建议无条件的使用这些跳转指令,肯定是要配合一定条件判断来使用的。

经常编码的人都知道,像if、while break、for这些都是包含跳转功能的,只不过是有一定条件才跳转。要是汇编真的没有jump这些跳转指令了,C语言就连if、while break、for这些都没法实现了。

所以,汇编有跳转很正常,是用来实现程序控制逻辑的必备元素。C语言要避免的是无条件滥用goto。

C语言goto语句如何使用?

1、C语言中goto又叫无条件转移语句,可以让程序直接跳转到任意标记的位置。用法就是“goto label……label:”。下面用一个示例来演示具体的用法,这里先新建一个C语言的程序文件,演示使用的是Visual Studio软件作为开发工具:

2、输入goto语句应用代码,这里先定义两个变量a和b,然后用printf函数打印两句话,直接用goto语句强制跳转到打印b语句的end标记位置,此时a的打印就不会执行了:

3、编译执行程序,按下crtl+F5打开命令行,就可以看到执行的结果,打印出了b语句,和预期的结果一样。以上就是C语言中goto的用法:

为什么不赞成使用goto语句(C语言)?

简单案例:

跳转到标签AA,实现循环。

#include

注意,标签不要写在定义变量的地方。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关推荐