标题: 关于C语言GOTO语句的用法 [打印本页]

作者: xjx51    时间: 2021-3-23 09:49
标题: 关于C语言GOTO语句的用法
我在编写一个单片机程序的时候,遇到了一个问题:想从IF语句里退出,但不退出函数。网上说要用GOTO语句,但我不知道怎么用,请各位指导下。
  1. #include"reg52.h"
  2. sbit key1 = P1^0;
  3. void keybord()
  4. {
  5.       if(key1 ==  0)
  6.       {
  7.             //在此退出
  8.       }
  9. }
  10. void mian()
  11. {
  12.       keybord();
  13. }
复制代码


作者: lincheng15    时间: 2021-3-23 10:27
直接用return就可以了, 用goto的话需要有要跳去的标签位置
lable:******


if(***){
   goto lable;
}
作者: 天ノ忆    时间: 2021-3-24 09:44
标志位啊,设N个标志位,用到哪个就跳哪个
作者: profile5    时间: 2021-3-24 09:52
你需要考虑下你代码逻辑问题, 可能没有规划好, 一般是可以避免使用goto语句的
作者: lwh999995    时间: 2021-3-24 13:20

作者: ANT1987    时间: 2021-3-24 13:30
单片机里面不用while吗,要程序停的时候就停在睡眠模式,退出if后在if语句后面跟你要实现的代码就行了 ,用不着goto啊
作者: 笨笨兔    时间: 2021-3-25 08:37
可以用return退出的。
当自己的C语言水平不够时,最好避免用GOTO。
作者: 黄youhui    时间: 2021-3-25 08:58
笨笨兔 发表于 2021-3-25 08:37
可以用return退出的。
当自己的C语言水平不够时,最好避免用GOTO。

我也建议用return。另外用if.....else if.....else 结构,将所有情况包含起来,进入if之后里面代码执行完不就直接到最后一步退出了吗。
作者: 蓝色弹珠    时间: 2021-3-26 17:27
key1=1;
把这个语句加进去就可以了
return会造成后面的语句不执行
作者: dzbj    时间: 2021-3-26 23:45
我不是答题的 只是搭车问一下 goto哪不好啊 从开始学的时候 书上就说尽量不用goto 然后 我就没用过 但书上也没说明白哪不好 后来看到的地方也都是一句不好 或者尽量不用就完了 有哪位有闲工夫的给讲讲为什么吗

我顶多理解到有很多逻辑的时候如果用goto愣跳会有麻烦 比如一些标记没清零或者变量没清零什么的 其它也没觉得goto哪不好
作者: 黄youhui    时间: 2021-3-27 17:39
dzbj 发表于 2021-3-26 23:45
我不是答题的 只是搭车问一下 goto哪不好啊 从开始学的时候 书上就说尽量不用goto 然后 我就没用过 但书上 ...

因为GOTO语句跳转的位置是随意的,可以往后跳也可以往前跳。往后跳的话会容易出现你说的一些标志位没处理或者某些功能没关闭的情况。但是如果往前跳的话,就可能会出现重复定义,重复赋值,自己构成无限循环之类的问题。另外有多个GOTO语句的话程序就会想蜘蛛网一样,乱连一通,降低代码的可读性,修改代码也会出现很多麻烦。
作者: liuzx66    时间: 2021-3-27 18:10
看了这个程序,在这里使用GOTO没有什么意义。直接取消就可以了。因为在这个IF里goto后面的代码完全是无用的代码
作者: maxwelllv    时间: 2021-3-27 22:35
用return就行
作者: dzbj    时间: 2021-3-27 23:11
黄youhui 发表于 2021-3-27 17:39
因为GOTO语句跳转的位置是随意的,可以往后跳也可以往前跳。往后跳的话会容易出现你说的一些标志位没处理 ...

感谢你的回复 你说的有道理 我因为没用过又有点好奇 才有此问
作者: gjldhr    时间: 2021-3-28 15:41
go  to语句比较直接简单,就是直接从一个地方到你想去的地方,适合自己写程序使用,别人看很容易乱
作者: 1051798957    时间: 2021-3-28 16:21
含义,goto语句也称为无条件转移语句;goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句;goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。写法楼上已经有人给例子了。
作者: 2454543352    时间: 2021-3-30 17:37
goto很厉害的语句,可以跳到你想要的位置。 前提是你得有一个标签,标签放到语句前,然后用goto 标签,就可以跳过去了
作者: xjx51    时间: 2021-3-30 19:13
1051798957 发表于 2021-3-28 16:21
含义,goto语句也称为无条件转移语句;goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句;got ...

谢谢!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1