怎样消除goto语句

您所在的位置:网站首页 goto指令怎么暂停 怎样消除goto语句

怎样消除goto语句

#怎样消除goto语句| 来源: 网络整理| 查看: 265

 //  今天心情好差啊!暗恋已经暗恋6年的女孩了!而且今天感冒了一直咳嗽!注意:大家感冒吃枇杷露时候一定不能吃红枣的!//

goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto 语句经常带来错误或隐患。

其实在linux编程中goto语句还是经常会使用到的很方便!特别是自己编写的一些小程序中。

你可以很轻松的 在网上找到这样的消除goto的示例!

if(condition1)     goto label; …… if(condition2)     goto label; …… label:     do_something. …… 则可以使用 do{ …… }while(0); 来代替goto. 代码如下: do{     ……     if(condition1)         break;     ……     if(condition2)         break;     …… }while(0); //label:     do_something. ……

切记其实goto语句和消除goto语句在本质上都是没有变化的都是通过修改ip来改变下一条程序指令的入口地址。结构化编程益于理解而已。上例中的label:出现在goto的后面!如果出现在前面呢这是我想讨论的 !

label:   code1.。。。

if(condition1)     goto label;

code2.。。。 if(condition2)     goto label; code3.。。。

如果还采用上述的办法显然是不行的!

此时可以改写为

//label:   code1.。。。

while(condition1) {       code1.。。。}

  code2.。。。

while(codition2)

{

//label:   code1.。。。

while(condition1) {       code1.。。。}

  code2.。。。

}

code3.。。。

其实可能会猜想如果就是单纯的goto呢??

label:   code1.。。。

goto label;

code2.。。。

这样就会产生无限循环。没多大意义。但是在系统程序中也许有意义的呃!这个的修改很简单。

do

 code1.。。。

}while(1)

code2.。。。

但是如果goto语句跨函数,跨程序,那就比较棘手了。你必须把函数先整合到一起,再用上面的方法进行修改哦啊!!!!

咳得厉害不写了 !!!!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3