学过 BASIC 或 FORTRAN 的人一定都用过 goto 语句,这个语句在 C 里面同样可以使用。不过,C 不提倡使用 goto 语句,因为 C 完全可以不用它,而滥用它往往会导致程序凌乱不堪、难以阅读和维护。当然,适当地使用 goto 语句也会使程序更加简洁。
goto 语句的作用是跳转到一条你指定的语句,然后从那条语句开始往下执行。goto 语句的用法很简单,首先在你想要跳往的语句前面加个标签和冒号:
to: printf("go to here\n");
注意,标签的命名需要符合标识符命名规则。
然后,当你想跳转到该条语句时,使用“goto 标签名;”即可:
goto to;
通常,能避免 goto 都应该尽量避免。但是,如果是在陷入了很深层次的循环里想要跳出最外层的循环,用 goto 直接跳出却比用 break 一个循环一个循环地跳出要好得多。例如:
while ( condition1 )
{
// ... ...
while ( condition2 )
{
// ... ...
while ( condition3 )
{
// ... ...
while ( condition4 )
{
// ... ...
goto out_of_loop;
}
}
}
}
out_of_loop:
// 其它语句
还有,在深层循环里,如果想跳过余下的语句,直接返回第一层循环,使用 goto 语句也可以大大减少代码量:
while ( condition1 )
{
// ... ...
while ( condition2 )
{
// ... ...
while ( condition3 )
{
// ... ...
while ( condition4 )
{
// ... ...
goto end_of_outmost_loop;
}
}
}
end_of_outmost_loop: ;
}
总之,goto 可以用,但不能滥用,使用前请务必三思。其实,你可以将 break 和 continue 理解成弱化了的 goto 语句。而我们上面所举的两个例子可以理解成强化了的 break 和 continue。
|