在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1369|回复: 0

[资料] goto语句

[复制链接]
发表于 2016-4-15 15:09:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

与许多其他的语言一样,C语言也支持goto语句,用于无条件地从程序的一处跳转到另一处。尽管在C这样的高度结构化的语言中不常使用goto语句,但可能有时还是难免需要的。

Goto要求有一个标签,用于标识要跳转的位置。一个标签就是一个合法的变量名,后面必须跟一个冒号。标签就放在控制权要转移的位置。Goto和标签语句的一般形式如下:

goto label;

......

......

......

  label:

  statement;

向前跳转


label可以位于程序的任意地方,即,既可以位于goto label;语句之前,也可以位于其后。

在运行程序时,当遇见像下面这样的语句时:

goto begin;

控制流立即跳转到标签begin后面的语句。这种跳转是无条件的。

注意,goto语句中断了程序的正常运行顺序。如果label位于goto label之前,将形成一个循环,其中一些语句将被反复运行。这种跳转称为向后跳转。相反,如果label位于goto label之后,就会有一些语句就跳过而没有被运行了。这种跳转称为向前跳转。

goto语句经常用在程序的末尾,用来指示控制权跳转到输入语句,以便读取更多的数据。请看如下示例:

main()

{

       doublex,y;

       read:

       scanf("%f",&x);

       if(x<0)goto read;

       y=sqrt(x);

       printf("%f%f\n",x,y);

       gotoread;

}

该程序用于计算从终端读取的数字的平方根。该程序使用了两个goto语句,其中有一个在程序的最后,即在显示结果的后面,用于把控制权转回到输入语句。而另一个goto语句则是当输入的数字为负时,跳过任何进一步的计算。

由于无条件的goto语句位于程序的末尾,因此控制权总是被转移回输入语句。事实上,该程序使计算进入了一个永久循环,称为无限循环。

图中程序延时了goto语句的使用。该程序用于计算5个数字的平方根。变量amount保存了已读取的数字的个数。如果amount小于或等于5goto read语句把控制权交给标签read;否则,程序显示了一条消息后停止运行。

goto语句的另一种使用是,当遇到某写特定条件时,把控制权从循环中转移出来。

......

while (......)

{

       for()

       {

              ......

              if(......) goto end-of-program;

              ......

       }

}

end-of-program:

......

我们应尽可能避免使用goto语句。但是,如果我们使用它能提高程序的可读性,或能提高程序的运行速度,使用它也没有什么错。

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-9 23:03 , Processed in 0.025310 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表