• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言goto语句

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
/* goto语句 */
#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

/*
goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 
放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。

*/

/*
"但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。"
所有goto说明都有类似提示,但是个人感觉goto还是很有用的

*/

int handle(int num)
{
    return num;
}

//goto基本用法
void test1()
{
    int errCode = 0;

    //业务1
    errCode = handle(1);
    if (errCode)
    {
        goto err;
    }

    //业务2
    errCode = handle(1);
    if (errCode)
    {
        goto err;
    }

    printf("-----ok----\n");

    return;
err:
    //资源释放处理
    printf("program is error .\n");
}

/*
goto作用域说明
标签本身没有作用域的,只是一个标志点。
但是goto本身有限制,只能是当前函数。所以,从这个角度来说,标签的作用域也可以说是当前函数。
*/
void test2()
{
     int errCode = 0;

     errCode = handle(1);
     if (errCode)
     {
         //goto err;   error C2094: 标签“err”未定义
     }
}

int main()
{
    test2();
    printf("-----ok------\n");
    getchar();
    return 0;
}
/* do{ ... }while(false)妙用  */
#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

/*
goto在函数有多个返回分支,部分或全部返回分支返回前需要做一些额外的工作(如释放内存等)场景很有作用
但是goto是跳转,在c++编程中,如果变量定义在goto语句后面就会报错(变量未定义)
do{ ... }while(false)就是一种取代goto的方法

*/

int handle(int num)
{
    return num;
}

//do while 使用
int test1()
{
    int errCode = 0;

    do 
    {
        //业务1
        errCode = handle(1);
        if (errCode)
        {
            break;
        }

        //业务2
        errCode = handle(1);
        if (errCode)
        {
            break;
        }

        //做需要执行的操作

    } while (0);

    //资源释放处理

    return errCode;

}

int main()
{
    test1();
    printf("-----ok------\n");
    getchar();
    return 0;
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap