[英]Question about “goto” in C
我正在尝试理解C代码。 在某些方面有:
for ...{
if condition{
a=1;
break;
}
}
在更高版本中将其更改为:
for ...{
if condition{
goto done;
}
}
done: a=1;
以我的观点,这两个观点应得出相同的结果,但不会发生。 你知道为什么吗?
更正的方法是:
for ...{
if condition{
goto done;
}
}
goto notdone;
done:
ok=0;
notdone:
这取决于for循环是否还有其他退出条件。
在第一个示例中,仅在if语句中的特定退出条件下发生a=1
。
在第二个示例中,在退出循环的所有情况下均发生a=1
。 只能使用return
语句或其他goto
语句来规避它。
在第二个版本中, 即使 condition
为假,最终也会执行a=1
,这仅仅是因为控制流最终已done:
在不再满足循环条件之后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.