关于goto语句 语句的小问题。

goto语句怎么用_百度知道
goto语句怎么用
提问者采纳
ahifhoaishfoasdfkasg  然后回车Enter  输出: if(getchar();  printf(&  }  例如输入://  int main(void)  {  int n=0,可以用goto语句跳到那个标签的地方;n&quot:20=====================注意那个loop后面有个冒号百度百科的示例代码;  }  printf(&  loop.htm" target="_blank">http,n);):<a href="http.baidu.h&quot,这个叫做标签L;n&#39,就这么简单;  goto loop://baike!=&#39.htm统计从键盘输入一行字符的个数;%d&&#92:&#92,你在程序里写了标签之后.stdio。  #include&)  {  n++.com/view/3209842;input a string .com/view/3209842
提问者评价
相关专业回答
goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的
前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。
如: label: i++;
loop: while(x&7);
C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向, 转去...
其他类似问题
为您推荐:
goto语句的相关知识
其他1条回答
goto语句即转移指令,是将cpu的当前的指令指针ip直接更改为goto语句指向的指令地址,然后从该地址继续往后执行。从汇编语言的角度来说,goto语句对应汇编语言的jmp指令,但汇编语言的危险在于jmp指令的跳转是不受约束或约束较少,机器指令级级别是可以随意跳转的,除非在执行前对指令进行严格检查,这其实是非常困难的。
早期的算法语言,比如fortran、pascal、basic等都支持goto语句,因为那时的语句较少,分支结构、循环结构需要借助goto语句实现。但这些高级语言对goto语句做了严格的限制,比如:(1)可以从一个结构(条件、循环)内部跳到外部,反之则不允许;(2)不允许从子程序中直接跳出,而要采用类似return的返回语句退出子程序,当然从主程序跳入子程序是绝对禁止的;等等。这些限制对现代还支持...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言goto语句
当前位置:
>> C语言goto语句
C语言goto语句
C语言goto语句实例代码教程 - goto语句在C编程语言提供的goto无条件跳转到带标签的语句相同的功能。
goto语句在C编程语言提供的goto无条件跳转到带标签的语句相同的功能。
注意:强烈建议不要使用goto语句在任何编程语言,因为它使得难以追踪程序的控制流,使程序难以理解和难以修改。可以重写任何程序,使用一个goto,因此,它不需要goto语句。
在C语言中 goto语句语法如下:
标签可以是任何纯文本,除C关键字,它可以被设置高于或低于goto语句在C程序中的任何地方。
int main ()
/* local variable definition */
int a = 10;
/* do loop execution */
if( a == 15)
/* skip the iteration -by */
a = a + 1;
goto LOOP;
printf("value of a: %d\n", a);
}while( a & 20 );
上面的代码编译和执行时,它会产生以下结果:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19深入理解goto语句的替代实现方式分析
字体:[ ] 类型:转载 时间:
本篇文章是对goto语句的替代实现方式进行了详细的分析介绍,需要的朋友参考下
曾几何时,goto是多么的让牛人绽放他们高超的精湛技术曾几何时,goto又变成了万恶之首曾几何时,goto只在教科书中的示例才会出现有太多的理由不让用goto,但有时,我们又想使用goto的功能,怎么办?用try/catch/finally便可实现同等于goto的功能,来看二个示例: 代码如下:try {&&&&& // operation one&&&&& if (failed) {&&&&&&&&&&& throw E&&&&& }&&&&& // operation two&&&&& if (failed) {&&&&&&&&&&& throw E&&&&& }&&&&& // operation three&&&&& if (failed) {&&&&&&&&&& throw E&&&&& }} catch (Exception e) {&&&&& // do something when cases failed}和: 代码如下:try {&&&& // operation one&&&& if (failed) {&&&&&&&&&&&& }&&&& // operation two&&&& if (failed) {&&&&&&&&&&&& }&&&&& // operation three&&&&& if (failed) {&&&&&&&&&&&&&& }} finally {&&&&& // do something when failed}以上二段都等同于: 代码如下:&&&&&& // operation one&&&&&& if (failed) {&&&&&&&&&& goto when_&&&&&& }&&&&&& // operation one&&&&&& if (failed) {&&&&&&&&&& goto when_&&&&&& }&&&&&& // operation one&&&&&& if (failed) {&&&&&&&&&& goto when_&&&&&& }when_failed:&&&&&& // do something when failed用异常的方式有些暴力,但确实能正确的帮助实现类似goto的功能;用return和finally虽不是很暴力,但是比较难控制,因为涉及到return语句,它会在finally块执行后得以执行,所以如果不想退出程序的话,这个方法还不如用异常来控制。另外,break, continue也是比较强大的跳转语句,特别是break label和continue label,可以跳出一层循环或是多层循环; 但是要注意一点的是break只能在循环语句和switch语句中使用,continue只能在循环语句中使用。所以它们的局限性也很大。这个小示例说明,goto不单单是一个语句,它是一种解决问题的思路和编程习惯,习惯了它的人,或者是想用它的人,即使不用goto也会写出类似goto逻辑出来。它的优点是会更容易的帮助找出解决方案。它的缺点也是众人皆知。但我们要避免的不单单是一个goto语句,而是这种“跳转式”的解决思路和编程习惯。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具李云 的BLOG
用户名:李云
文章数:187
评论数:1735
访问量:1282211
注册日期:
阅读量:5863
阅读量:12276
阅读量:310564
阅读量:1026125
51CTO推荐博文
goto语句在C/C++语言中可谓是“臭名昭著”,乃至有的书(或公司的编程规范)提出禁用goto语句的说法。其结果就是,造成有的程序员一看到goto语句在某程序中被使用,就本能地认为这个程序写得很“垃圾”。此外,也使得有些程序员因为使用了goto语句而觉得自己很不专业。其实,凡事都不能太偏激,goto语句运用得好能大大地简化程序,以及提高程序的可读性和可维护性。在开始示例其好处之前,先用一些统计数据来说明goto语句并没有因为“臭名昭著”而被抛弃,这些统计数据可能并不是百分之百的精确,但很具有说服力。对于操作系统,Linux-2.6.21内核使用了20,333个goto语句,VxWorks-6.2则使用了9142个,最后941个goto语句被运用到了rtems-4.9.2中;另外,glibc-2.9库使用了1750个goto语句。所有这些统计数据都表明,goto语言并没有想象的那样可怕而招到禁用,其关键在于 ―― 恰当地运用它。图1是一个没有采用goto语句编写的函数,其中存在多处出错处理的代码,比如113~115行、120~122行和126~129行。采用这种分布式的出错处理,很容易出现遗漏释放前面已经分配的资源,从而造成资源泄漏问题。如果采用goto语句,则能取得更好的效果。example.c00097: int queue_init (queue_t ** _pp_queue, int _size)00098: {00099: & & pthread_mutexattr_00100: & & queue_t *00101:00102: & & & &queue = (queue_t *) malloc(sizeof(queue_t));00103: & & & &if (0 == queue) {00104: & & & & return -1;00105: & & }00106: & & *_pp_queue =00107:00108: & & memset (queue, 0, sizeof (*queue));00109: & & queue-&size_ = _00110:00111: & & pthread_mutexattr_init (&attr);00112: & & if (0 != pthread_mutex_init(&queue-&mutex_, &attr)) {00113: & & & & pthread_mutexattr_destroy (&attr);00114: & & & & free (queue);00115: & & & & return -1;00116: & & }00117:00118: & & queue-&messages_ = (void **) malloc (queue-&size_ * sizeof (void *));00119: & & if (0 == queue-&messages_) {00120: & & & & pthread_mutexattr_destroy (&attr);00121: & & & & free (queue);00122: & & & & return -1;00123: & & }00124:00125: & & if (0 != sem_init(&queue-&sem_put_, 0, queue-&size_)) {00126: & & & & free (queue-&messages_);00127: & & & & pthread_mutexattr_destroy (&attr);00128: & & & & free (queue);00129: & & & & return -1;00130: & & }00131:00132: & & pthread_mutexattr_destroy (&attr);00133:00134: & & return 0;00135: }图1图2是采用goto语句所编写的另一个版本,与不采用goto语句的版本相比,程序更加的简单,且在出错处理的地方大都使用goto语句跳转到程序的末尾进行处理。goto语句除了可以用在这里所示例的出错处理中,还可以用在其它的程序逻辑中以简化程序并提高阅读性。example.c00053: int queue_init (queue_t ** _pp_queue, int _size)00054: {00055: & & pthread_mutexattr_00056: & & queue_t *00057:00058: & & queue = (queue_t *) malloc(sizeof(queue_t));00059: & & & & if (0 == queue) {00060: & & & & return -1;00061: & & }00062: & & *_pp_queue =00063:00064: & & memset (queue, 0, sizeof (*queue));00065: & & queue-&size_ = _00066:00067: & & pthread_mutexattr_init (&attr);00068: & & if (0 != pthread_mutex_init(&queue-&mutex_, &attr)) {00069: & & & &00070: & & }00071:00072: & & queue-&messages_ = (void **) malloc (queue-&size_ * sizeof (void *));00073: & & if (0 == queue-&messages_) {00074: & & & &00075: & & }00076:00077: & & if (0 != sem_init(&queue-&sem_put_, 0, queue-&size_)) {00078: & & & & goto error1;00079: & & }00080:00081: & & pthread_mutexattr_destroy (&attr);00082:00083: & & return 0;00084:00085: error1:00086: & & free (queue-&messages_);00087: error:00088: & & pthread_mutexattr_destroy (&attr);00089: & & free (queue);00090: & & return -1;00091: }图2使用goto语句时需要注意以下原则:1) 不要过份地使用。比如图2中的60行就没有采用goto语句跳到程序的最后面,之所以这里不使用goto是为了阅读方便。因为程序此时还没有分配资源,所以直接返回显得更加的直接了当。还有就是,在这个函数中如果存在使用goto语句都意味着出错了且需要释放资源。如果将60行的语句也改为goto就破坏了这个函数中使用goto语句的一致性。2) 不要让goto语句形成一个环。使用goto语句应形成一条线,从一点跳到另一点。当然,如果goto语句的使用没有破坏可读性,那可以适当的考虑打破这一原则。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
10:02:51 12:57:44 19:04:19 19:19:12 20:26:37 17:03:19 20:32:01 16:02:36 08:42:25

我要回帖

更多关于 小时代经典语句 的文章

 

随机推荐