熟悉 C 语言的小伙伴一定对 goto 语句不陌生,它可以在代码之间随意的跳来跳去,但是好多老鸟都告诫大家,不要使用 goto ,因为 goto 会使你的代码逻辑变的极其混乱。 但是有时候我们不得不用它,因为它太高效了。比如进入循环内部深层一个 goto 就能回到最上层,还有可以定位到代码的任意一个位置,很是高效方便。 但是也不要所有的代码都用 goto ,那样你的代码就变得像量子世界那样诡异,连你自己都控制不了。 最后一句忠告,能不用 goto 最好就不用。 首先安装一个 goto 的包(因为官方是没有 goto 语句的) pip install goto -statement 具体的语法 在C++中,有三种类型的循环语句:for, while, 和do…while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do…while相对不受重视。但是我发现了do…while的一些十分聪明的 用法 ,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do…while(0)消除 goto 语句通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样:version 1 代码如下:bool Execute(){   // 分配资源   int *p = new int;   bool bOk(t 首先,由于 goto 语句可以灵活跳转会导致破坏结构化设计风格,若一段代码多次使用 goto 语句会降低代码的可读性。 其次, goto 语句的执行可能会跳过变量的初始化、重要的计算语句等,甚至影响到整个程序的运行。 下面笔者介绍一种可以代替 goto 语句的方法。 void SearchInfo(MailList* ml,char* find) “ goto ”这个东西其实能是代码看起来更加清晰,大家都这么用:foo(){    .......    if (condition_1) goto error_ret;    if (condition_2) goto error_ret;error_ret:    // 释放资源    ....    return -1;}也可以用do...while来做:foo() 之前在博文中说过do while(0)的 用法 , 不过实际项目中用得不多。 最近遇到麻烦了, 感觉到不用do while(0)就很蛋疼。 先来看一段比较常规的丑代码: #include using namespace std; int fun(int a, int b, int c, int d) int errCode = 0; if(a < 0) errCode = - Goto 是各种规范中都保留的关键字,却都不提倡使用的.有时可以用Do...While...来代替 Goto do{if (someCondition){break;}}while(0);Label1:DoOtherThing这个相当于if (someCondition){ goto :Label1;} 转载于:https://www.cnblogs.c... 最近在看面试题的时候,做到了一些关于它们的一些选择题,我也有点疑惑,所以求助于百度,然后我也没有找到确切的答案,下面给出2个选择题谈谈我个人的看法。 选择题1: 下列关于for循环和while循环的说法中那个是正确的?() A、while循环能实现的操作,for循环也都能实现 B、while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果 C、两种循环任何时候都可替换 D、两种循环结构中都必须有循环体,循环体不能为空 答案:A、C A:我没有找到可以反对的例子,所以A项正确 当错误发生时,函数需要返回,使用 goto 语句跳转到结尾,然后执行相应的释放资源的操作,是一种常用的写法,这也是对 goto 语句运用比较合理的方案。经历过几个项目,大都采用这种方案。但这有种负面的影响,因为所有的变量定义必须要在 goto 之前,所以就不得不在函数头部放置所有的变量定义,而实际上变量的实际作用域也许只有相邻的几行,这样可读性就变弱了。下面的事例,利用do{}while(0);跳转使用bre