叫哥给你买糖 发表于 2020-3-31 17:41

C语言 goto使用问题



在 if 判断中使用goto, 当条件不成立的时候, goto语句也会被执行吗?为什么?

源代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i = 1;
    for(i; i <5 ; i++) {
      printf("%d\n" , i);
      if(i > 10)
      {
            goto TiaoChu;
      }
    }
TiaoChu:
    printf("程序结束\n");
    return 0;
}


输出结果:
1
2
3
4
程序结束

if判断没有成立, goto语句也被执行了。goto语句总会被执行吗?



罗萨 发表于 2020-3-31 17:55

最好不要用goto语句,想跳出循环的话可以使用break语句;

MockingJay 发表于 2020-3-31 17:57

Dijkstra说过代码质量可以看goto语句的数量,越多越差。

咕咚陛下 发表于 2020-3-31 17:57

我怎么觉得没有执行goto

gunxsword 发表于 2020-3-31 18:01

我觉得你这个问题问的真的很蠢,你那是条件不成立才执行的GOTO吗,你那是FOR执行完了,顺行执行的.....

wendaoqi 发表于 2020-3-31 18:02

goto只是起到一个转跳位置的作用,for结束了代码往下走,并没有执行goto

魔术使nqy 发表于 2020-3-31 18:14

没有执行,你把 程序结束 那句话放到上面去看看就明白了,如果执行了goto那么它会跳上去执行的。

鬼魅王子 发表于 2020-3-31 18:36

不要用goto了解一下作用就可以了

luanshils 发表于 2020-3-31 18:36

你的i不满足当然不执行,虽然goto叫无条件跳转,但是你也要能执行到goto这一条语句啊

xieyunsky 发表于 2020-3-31 18:43

你这个goto是没有执行的。你的循环条件是i < 5,所以输出了 1 2 3 4,你在for里面的判断if(i > 10)是没有进入过的。当for执行完毕,会继续往下走,走到你的TiaoChu标号的位置,然后继续执行你的printf语句。goto只是无条件跳转,但是程序里面的语句还是会顺序执行的。你可以试试把if(i > 10)改成if(i > 3)你就可以看到会输出两次 程序结束 了。
页: [1] 2
查看完整版本: C语言 goto使用问题