关于C中"goto"的问题

Ope*_*way 0 c goto break

我想了解一个C代码.在某些方面,有:

for ...{
    if condition{
       a=1;
       break;
    }
}
Run Code Online (Sandbox Code Playgroud)

在更高版本中更改为:

for ...{
    if condition{
       goto done;
    }
}
done: a=1;
Run Code Online (Sandbox Code Playgroud)

从我的观点来看,两个版本都应该给出相同的结果,但它不会发生.你知道为什么吗?

更正:修复方法是:

for ...{
    if condition{
       goto done;
    }
}

            goto notdone;
            done: 
                ok=0;
            notdone:
Run Code Online (Sandbox Code Playgroud)

Sté*_*hen 6

这取决于for循环是否有任何其他退出条件.

  • 在第一个示例中,a=1仅在if语句中针对该特定退出条件发生.

  • 在第二个示例中,a=1发生在退出循环的所有场景中.它只能使用return声明或其他goto声明来规避.