21ic电子技术开发论坛 单片机与嵌入式系统 Megawin(笙泉)单片机 不用goto向上跳转
发新帖我要提问
12下一页
返回列表
打印

不用goto向上跳转

[复制链接]
667|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huanghuac|  楼主 | 2017-9-24 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这种程序怎样编写
沙发
happy_10| | 2017-9-24 22:30 | 只看该作者

能不能有continue

使用特权

评论回复
板凳
bqyj| | 2017-9-24 22:31 | 只看该作者

C语言一般都是顺序执行的吧,我还没有过要向上运行的。

如果非得向上,While;for都可以吧

使用特权

评论回复
地板
zhuhuis| | 2017-9-24 22:32 | 只看该作者

向上跳就是为了再执行一次已经执行的代码
可以用循环结构实现之

使用特权

评论回复
5
tian111| | 2017-9-24 22:33 | 只看该作者

continue,break、等等可以实现所有的算法,换个思路想想吧!

使用特权

评论回复
6
songqian17| | 2017-9-24 22:35 | 只看该作者
我猜LZ是用汇编用惯了喜欢跳来跳去

使用特权

评论回复
7
chenho| | 2017-9-24 22:38 | 只看该作者

对,
建议用C就不要跳啦,循环的话用for,while,条件的话就把那段做成子函数,if调用

使用特权

评论回复
8
gongche| | 2017-9-24 22:39 | 只看该作者

continue是结束本次循环,继续跳到条件判断处吧

使用特权

评论回复
9
huanghuac|  楼主 | 2017-9-24 22:40 | 只看该作者

刚从汇编转成C语言确实一下难道改掉一些汇编的编程思维,一遇到要判断的地方就想跳!

使用特权

评论回复
10
happy_10| | 2017-9-24 22:41 | 只看该作者

如果只是跳转的次数少,而且,转换其它思路很困难的话,不如直接用goto。

使用特权

评论回复
11
wenfen| | 2017-9-24 22:43 | 只看该作者

我开始也是不习惯C,你可以吧要用的功能写为一个子程序然后调用或者多用IF 分支选择语句就好了。

使用特权

评论回复
12
wenfen| | 2017-9-24 22:44 | 只看该作者
不建议用goto语句,建议优化程序设计思路,写成2个函数

使用特权

评论回复
13
zhuhuis| | 2017-9-24 22:45 | 只看该作者

高手用汇编写程序,你可以看出其中有C的架构

不过,我也看过一些C程序,我猜,那是先用汇编写好,然后手工译成C

希望楼主不是在进行这个工作

习惯汇编就用汇编好了!

使用特权

评论回复
14
tian111| | 2017-9-24 22:46 | 只看该作者

估计楼主是刚学C,多看点别人的程序,
这不是什么go to的问题,是你不熟悉,不懂C。
很简单的 for 循环基本可以满足

使用特权

评论回复
15
songqian17| | 2017-9-24 22:50 | 只看该作者
大伙都是高手,把我看得很透彻啊,呵呵

使用特权

评论回复
16
chenho| | 2017-9-24 22:51 | 只看该作者

可以无差错的达到目的就行,用什么无所谓;

使用特权

评论回复
17
gongche| | 2017-9-24 22:52 | 只看该作者
写成状态机的形式,有点像任务调度,就可以实现各个任务的跳转了

使用特权

评论回复
18
happy_10| | 2017-9-24 22:53 | 只看该作者

goto不是不能用,他所以存在就是为了用的,但要看场合,如果一个goto就能是你的程序完成既要的功能,清晰明了,为什么不用呢
但如果你滥用goto的话,最后你自己都会昏头

使用特权

评论回复
19
zhuhuis| | 2017-9-24 22:55 | 只看该作者

这个问题我曾经也遇到过。4年前刚刚从A转到C时。也在这个问题上遇到过。后来在坛子也遇到同样的问题。也用过整个程序只要一个死循环的,不过我现在东西让别的做的东西他是每个任务都要用死循环。所以就用了很多GOTO 之类的语句。不过各有好处。

使用特权

评论回复
20
tian111| | 2017-9-24 22:56 | 只看该作者

实现同样的功能,代码的比较如下:Program Size: data=67.7 xdata=0 code=4894(只要一个死循环,无GOTO 之类的语句)
Program Size: data=20.2 xdata=161 code=10752(这个是用了goto每个任务都是死循环)
同样的编译等级9(keil)

使用特权

评论回复
下一页 »
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

772

主题

8473

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部