Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18689736
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-03-20 18:56:20

来源: 作者:Antigloss 等级:一般
发布于2007-07-27 09:05 被读2333次 【字体: 】

    学过 BASIC 或 FORTRAN 的人一定都用过 goto 语句,这个语句在 C 里面同样可以使用。不过,C 不提倡使用 goto 语句,因为 C 完全可以不用它,而滥用它往往会导致程序凌乱不堪、难以阅读和维护。当然,适当地使用 goto 语句也会使程序更加简洁。

    goto 语句的作用是跳转到一条你指定的语句,然后从那条语句开始往下执行。goto 语句的用法很简单,首先在你想要跳往的语句前面加个标签和冒号:

        to: printf("go to here\n");

注意,标签的命名需要符合。

    然后,当你想跳转到该条语句时,使用“goto 标签名;”即可:

        goto to;

    通常,能避免 goto 都应该尽量避免。但是,如果是在陷入了很深层次的循环里想要跳出最外层的循环,用 goto 直接跳出却比用 break 一个循环一个循环地跳出要好得多。例如:

        while ( condition1 )
        {
            // ... ...
            while ( condition2 )
            {
                // ... ...
                while ( condition3 )
                {
                    // ... ...
                    while ( condition4 )
                    {
                        // ... ...
                        goto out_of_loop;
                    }
                }
            }
        }
        out_of_loop:
        // 其它语句

    还有,在深层循环里,如果想跳过余下的语句,直接返回第一层循环,使用 goto 语句也可以大大减少代码量:

        while ( condition1 )
        {
            // ... ...
            while ( condition2 )
            {
                // ... ...
                while ( condition3 )
                {
                    // ... ...
                    while ( condition4 )
                    {
                        // ... ...
                        goto end_of_outmost_loop;
                    }
                }
            }
        end_of_outmost_loop: ;
        }

    总之,goto 可以用,但不能滥用,使用前请务必三思。其实,你可以将 break 和 continue 理解成弱化了的 goto 语句。而我们上面所举的两个例子可以理解成强化了的 break 和 continue。

参考资料:C Primer 5th Edition

本文版权归 以及 作者 Antigloss 共同所有,转载请注明原作者和出处。谢谢。

阅读(938) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~