转贴自:嵌入式Hodgepodge关于C语言的goto语句存在许多争议,许多书籍建议“谨慎使用它,或者根本不使用它”。 Linux之父Linus在Linux中广泛使用goto,这也启发了我们合理地使用goto语句。
存在是合理的。由于它是C语言的知识点,因此我们仍然需要学习使用它。
让我们看一下如何使用goto:1. goto的基本语法goto语句有两个部分:goto和标签名。标签的命名规则与变量的命名规则相同。
如:goto标签;为了使该语句正常工作,该函数还必须包括另一个标记为label的语句,该语句以标签名称开头,后跟冒号,例如:label:printf(“ goto here”。
”);二,goto / *编译器环境示例:mingw32 gcc6.3.0 * / #include #include / * goto test * / void TestGoto(void){int i;而(1){对于(i = 0; i 10; i ++){如果(i> 6){转到标签;} printf(“%s:i =%d
&quot ;, __FUNCTION__,i);}}标签:printf(“ test goto end!”);} int main(void){TestGoto();}运行结果:从运行结果中,我们显然可以知道用法goto的代码,可能会跳出多个循环在程序执行过程中,遇到goto语句时,可以跳转到标签以继续执行。
值得注意的是,goto语句和它跳转到的标签必须在同一函数中。第三,转到,中断和继续之间的区别?跳转语句也是如此。
goto语句和break and continue语句有什么区别?实际上,中断和继续是goto的特殊形式。使用break和continue的好处是它们的名称已经表明了它们的用法。
以下代码示例介绍一下break并继续的用法:1. Break测试功能使用上面的测试程序来构建一个功能来测试break语句void TestBreak(void);,例如:/ * break test * / TestBreak(void){int i;而(1){for(i = 0; i 10; i ++){如果(i> 6){break; / *第一个中断:跳出for循环* /} printf(“%s:i =%d
&quot ;, __FUNCTION__,i);} printf("现在i =%d
",i);休息; / *第一个中断:跳出while循环* /} printf(“ test break end!”);}运行结果:从运行结果中,我们显然可以知道中断可以退出当前循环。在此示例中,第一个break语句退出当前的for循环,第二个break语句退出当前的while循环。
可以看出,中断可以退出一个循环级别。因此,根据break和goto的特性,我们知道,如果它跳出了Loop的许多层,使用goto会更加方便。
2.继续测试功能相同,创建一个函数来测试继续语句void TestContinue(void);,例如:/ * Continue test * / void TestContinue(void){int i; for(i = 0; i 10; i ++){if(i> 6){printf(“ i =%d,继续下一个循环
",i);继续; / *继续:结束此循环(而不是终止该循环层)并继续进行下一个循环* /} printf(“%s:i =%d
&quot ;, __FUNCTION__,i);} printf(“ test break end!”);}运行结果:从运行结果中,我们可以清楚地知道,continue可以结束此循环(而不是整个循环)并输入下一个循环循环(i。代表循环数)。
4.支持和反对goto的原因是什么? 1.不主张使用goto的人群比例应该相对较大。不提倡的主要原因是:很容易弄乱逻辑,也很难理解。
2.使用goto的原因这部分人认为goto可以在以下两种情况下使用更为方便:(1)跳出多层循环。这个例子类似于我们上面的goto测试程序。
(2)异常处理。执行功能可能会产生许多异常情况。
有几种处理方法,以代码为例:方法1:判断后,如果条件错误,直接返回。 int mystrlen(char * str){int count = 0; if(str == NULL){返回-1;} if(* str == 0){返回0;} while(* str!= 0){count ++; str ++;}返回计数;}方法二:首先设置一个变量,为该变量分配一个值,只有一个返回。
int mystrlen(char * str){int ret; if(str == NULL){ret = -1;}否则if(* str == 0){ret = 0;} else {ret = 0; while(* str!= 0){ret ++; str ++;}} return ret;}方法3:使用goto语句。 int mystrlen(char * str){int ret;如果(str == NULL){ret = -1;转到_RET;}如果(* str == 0){ret = 0; goto _RET;} while(* str!= 0){ret ++; str ++; } _RET:返回ret; }其中,第三种方法是许多人提倡的方法。
使用goto err均匀跳跃是最方便,最有效的方法。从反汇编语句的数量可以看出,指令使用最少,消耗的寄存器最少。
公司: 深圳市捷比信实业有限公司
电话: 0755-29796190
邮箱: tao@jepsun.com
产品经理: 陆经理
QQ: 2065372476
地址: 深圳市宝安区翻身路富源大厦1栋7楼

更多资讯
获取最新公司新闻和行业资料。
- 变阻器在结构上与电位器有很大关系,但它们不用作分压器,而是用作可变电阻器 变阻器变阻器在结构上与电位器有很大关系,但它们不用作分压器,而是用作可变电阻器。它们只能使用 2 个端子,而不是 3 个端子的电位器。一种连接在电阻元件的一端,另一种连接在可变电阻器的雨刷器上。在古代,变阻器...
- 铝壳电阻器的主要特点是什么?和普通电阻器有什么区别? 铝壳电阻器的主要物理特征是将电能转化为热能,可以说是电流通过时产生内部能量的耗能部件。外壳由铝合金制成(金色铝壳),表面有散热槽,体积小、功率大、耐高温,过载能力强,耐候性强,精度高,标准低感应电阻,...
- 欧璐O-墙壁开关:简约设计与实用功能的完美结合 欧璐O-墙壁开关是一款结合了实用性和设计感的产品,特别适合现代家居使用。这款开关设计为一开多三孔单的设计模式,意味着一个开关可以控制多个电器的电源,不仅节省了安装空间,还极大地提升了使用的便捷性。其外观简...
- 电感为什么可以储存能量,电感是如何储存电能的呢 电感器是可以存储能量并基于电磁感应原理工作的电子元件。电感器通常由线圈组成,当电流通过线圈时,线圈周围会产生磁场,从而储存能量。以下是对电感储能原理的详细分析: 电感器的工作原理:&...
- 精密电阻是什么样的电阻呢? 精密电阻往往与高精度电阻联系在一起,精度代表电阻值的精度,而电阻值的精度实际上受多种因素影响。这些影响电阻值准确性的因素统称为“应力”。应力来自很多方面,比如环境温度的变化,电阻本身产生的自热,PCB的...
- 为什么使用并联电容器来提高功率因数而不是串联 为什么使用并联电容器来提高功率因数而不是串联为了保证补偿后的设备仍能正常工作。串联电容器和并联电容器之间电路结构的差异导致负载器件的操作状态不同。1.如果并联电路的电压相同,设备仍享有与补偿前相同的额定电...
- 为什么在零状态条件下,电容在t=0+时可视为短路? 在电路分析中,特别是在讨论暂态响应时,我们会遇到零状态条件下的电容。所谓零状态,是指初始时刻电容两端的电压为零。当考虑电路在施加输入信号的瞬间(即t=0+时),电容由于其存储电荷的能力,在这一时刻可以被视为...
- 压敏电阻的主要用途是什么? 压敏电阻的主要用途包括以下几个方面:电路保护:压敏电阻可以用作电路保护元件,以保护敏感电路免受过压、浪涌电流和电磁干扰等问题的影响。它们可以在电路中提供瞬态电压抑制和浪涌电流保护,从而保护设备免受损坏...
- 合金电阻的主要作用是什么? 合金的电阻是多少?合金的电阻是具有高功率、低电阻、低电感和低温漂的金属合金材料的电阻。金属合金材料的电阻主要用于电路中的电流检测。工程师也称它为合金电阻、电流检测电阻、采样电阻和采样电阻、电流传感电阻...
- 压敏电阻的电阻值可以通过多种方式进行测量,例如什么是最常用的方法? 压敏电阻的电阻值可以通过多种方式进行测量,其中最常用的方法是使用万用表来测量。这种方法非常简单和方便,可以在家中或办公室中进行。使用万用表测量压敏电阻的电阻值的步骤如下:选择合适的万用表。数字万用表可...
- 压敏电阻的主要特性是什么? 压敏电阻的主要特性包括以下几个方面:压敏特性:当施加在压敏电阻上的电压变化时,其电阻值也会发生变化,呈现出压敏特性。通常情况下,压敏电阻的电压系数较大,当电压变化较小时,其电阻值变化也较小。非线性特性...
- 电容器的三个主要功能是什么 电容器的三个主要功能是什么对于电容器,大家应该都听说过,电容器是一种常见的电子元件,其主要功能是储存和释放电能。现在让我们了解一下电容器的作用。直流阻断:其功能是防止直流电通过,并允许交流电通过。旁路...
- 半导体放电管的主要功能是什么? 半导体放电管的主要功能是在电路中作为高功率电子器件的开关,以保护电路免受高能量浪涌电流的影响。当浪涌电流通过半导体放电管时,它会在纳秒级别内将其转换为低电平,从而保护电路中的敏感元件,如电容、电感和晶...
- 电容温度系数不一样有什么影响吗 电容器温度系数:1、介绍 电容器温度系数是指在电容器元件受温度影响时,其容量及其他电性能的改变程度。若温度恒定,其就表示该电容器的性能稳定;如果在温度变化的情况下,会使电容器的性能发生改变,便可用...
- 为什么有些压敏电阻可以用作冲击测试? 压敏电阻可以用作冲击测试,其原理是基于压敏电阻的压敏特性和冲击信号的特点。具体来说,压敏电阻可以用来检测冲击信号的幅度和持续时间。由于压敏电阻的电阻值会随着外加压力的变化而变化,因此可以通过测量压敏电...
- 为什么有些压敏电阻可以用作微波暗室? 压敏电阻可以用作微波暗室,其原理是基于压敏电阻的微波烧结技术和无势垒氧化锌大功率线性电阻。微波暗室是一种用于测试微波设备的暗室,其中可以通过使用压敏电阻来控制微波信号的传播和反射。压敏电阻的微波烧结技...
- 为什么有些压敏电阻可以用作气体检测? 压敏电阻可以用作气体检测,原因是它对气体变化非常敏感。当空气中的气体变化时,压敏电阻的电阻值会发生变化,从而可以检测出空气中气体的变化。此外,压敏电阻响应速度快,可以快速检测出气体变化,因此它可以用作...
- 为什么有些压敏电阻可以用作射线成像? 一些压敏电阻可以用作射线成像,因为它们具有磁致电阻效应。当射线辐射通过压敏电阻时,会产生磁场,从而导致压敏电阻的电阻值发生变化。通过测量压敏电阻的电阻值变化,可以获得射线辐射在空间中的分布信息,从而实...
- 为什么有些压敏电阻可以用于湿度测量? 有些压敏电阻可以用于湿度测量是因为它们具有对湿度敏感的特性。这种特性通常称为湿度系数,表示在一定的湿度范围内,压敏电阻的电阻值随着湿度的变化而发生的变化。常见的湿度系数范围为10^3到10^4,而某些压敏电阻可以...
- 为什么有些压敏电阻可以用作真空度测量? 压敏电阻可以用作真空度测量,其原理是基于压敏电阻的压敏特性和真空度与压力之间的关系。具体来说,可以使用一个压敏电阻来测量气体的压力,然后根据真空度与压力之间的关系计算出真空度。例如,可以使用一个称重传...