goto
C++拥有臭名昭著的goto语句:
goto identifier;
identifier : statement
goto在高级程序设计中极少有用,但是在那些不是由人写出,而是由某个程序生成出来的C++代码里就可能很有用处。例如,goto可能被用在一个由分析程序生成器生成语法的分析程序里。在一些罕见的优化性能极端重要的程序里,goto也可能非常重要,例如在某些实时应用的内层循环中。
标号(label)的作用域是它所在的那个函数。这就意味着你能够利用goto跳进或者跳出一个块。仅有的限制就是你不能跳过初始式,也不能跳进异常处理程序(8.3.1节)。
在常规代码中极少存在goto的有意义应用,这种情况之一是从嵌套的循环或者switch语句中退出来(break语句只能退出最内层的循环或者switch语句)。例如,
void f()
{
int i;
int j;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(nm[i][j] == a) goto found;
// not found
// ...
found:
// nm[i][j] == a
}
还有一种continue语句,实际上,它就是跳到一个循环语句的最后,如6.1.5节的解释。
🔚