为什么C语言中的go to 语句老师说要小心使用?注意的地方是什么?

2024-11-05 05:11:55
推荐回答(5个)
回答1:

goto语句称为无条件转移语句,通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。而且,goto语句一般可以用其他语句来代替。

当然,goto语句也有其优势,例如可以用goto语句一次性跳出多重循环,而不需要使用多个break语句一步一步地跳出,从而使代码更为简洁。

在C语言中使用goto语句的注意事项如下:

  1. 使用goto语句只能转移到到同一函数内,而不能从一个函数里转移到另外一个函数里。

  2. 使用goto语句在同一函数内进行转移时,转移的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。

  3. 不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。

  4. 应该避免向两个方向跳转。这样最容易导致“面条代码”。

所以说,goto语句要小心使用。

回答2:

goto语句可跳出多层循环,但是会破坏程序执行流程和结构化程序设计,所以在一个函数内部用一般不会出现什么问题,但是在跨函数用的时候就会出现一些奇怪的现象,比如说编译的时候 出现错误或者警告 或者出现乱码,所以最好尽量少用goto语句

回答3:

使用GOTO有时候会让程序的可读性不好,对于教育者来说,尤其是改卷老师来说,这简直就是噩梦,所以学校极力不推荐使用GOTO语句,书上也只是匆匆一笔带过。但实际中,GOTO还是可以一用的,根据实际需求使用吧。

回答4:

goto语句要避免使用,它最大缺点是使得程序可读性变差,许多教科书上都不介绍这种语句。

回答5:

亲,不是不用goto,而是通常情况下有更好的替代方法、使用过多goto会使程序变成垃圾代码,难以阅读且难以修改。但有时有用,像下面这个例子。
while(……)
{
switch(……)
{
……
goto done;
……
}
}
done:……
为了从while循环中跳出来,break不能达到要求(只跳出switch),而goto无限制。