GOTO跳段指令怎么用,关于C语言的goto语句存在很多争议,很多书籍都建议“谨慎使用,或者根本不用”。这里先不做过多的讨论,存在即合理,既然是C语言中的一个知识点,我们还是有必要学会使用。先看一些goto如何用:
一、goto的基本语法
1、C语言中goto又叫无条件转移语句,可以让程序直接跳转到任意标记的位置。用法就是“goto label……label:”。下面用一个示例来演示具体的用法,这里先新建一个C语言的程序文件,演示使用的是Visual Studio软件作为开发工具。
goto语句有两部分:goto和标签名。标签的命名规则与变量的命名规则一样。如:
goto label;
要让这条语句正常工作,函数还必须包含另一条标为label的语句,该语句以标签名后紧跟一个冒号开始,如:
label:printf(&34;);
二、goto的例子
运行结果:
三、goto与break、continue的区别?
同样是跳转语句,goto语句与break、continue语句有什么区别呢?实际上,break和continue是goto的特殊形式。使用break与continue的好处是:其名称已经表明他们的用法。下面通过代码实例看一下break与continue的用法:
goto 是一种 C 语言中的跳转语句,可以用于将程序的执行转移到代码中的其他位置。使用 goto 语句时,需要先定义一个标签(label),然后在 goto 后面加上这个标签,就可以使程序跳转到标签所在的位置执行。下面是一个简单的。
1、break测试函数
使用上面的测试程序,建一个测试break语句的函数void TestBreak(void);,如:
运行结果:
从运行结果我们明显可以知道,break可以退出当前循环。在本例子中,第一个break语句退出当前的for循环,第二个break语句退出当前的while循环。可见,一个break可退出一层循环。所以,根据break与goto的特点知道,如果是跳出很多层循环,使用goto会方便些。
2、continue测试函数
同样的,建一个测试continue语句的函数void TestContinue(void);,如:
运行结果:
四、支持与反对goto的理由是什么?
1、不提倡使用goto
通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱。goto对应(标签)既可以定义在for循环前面,也可以定义在for循环后面,当跳转到。
不提倡使用goto的占比应该比较多,不提倡的原因主要是:
很容易把逻辑弄乱且难以理解。
2、使用goto的理由
这一部分人认为goto可以用在以下两种情况比较方便:
(1)跳出多层循环。
这个例子就类似于我们上面的goto测试程序。
(2)异常处理。
一个函数的执行过程可能会产生很多种情况异常情况。下面有几种处理方式,以代码为例:
方法一:做出判断后,如果条件出错,直接return。
方法二:先设置一个变量,对变量赋值,只有一个return。
方法三:使用goto语句。
其中,方法三就是很多人都提倡的方式,统一用goto err跳转是最方便且效率最高的,从反汇编语句条数可以看出指令用的最少,消耗的寄存器也最少,效率无疑是最高的。并且,使用goto可以使程序变得更加可扩展。当程序需要在错误处理时释放资源时,统一到goto处理最方便。这也是为什么很多大型项目,开源项目,包括Linux,都会巨量的出现goto来处理错误!