熟悉 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