输出:
正在执行外部循环。i = 0
正在执行内部循环。j = 0
正在执行内部循环。j = 1
正在执行外部循环。i = 1
正在执行内部循环。j = 0
正在执行内部循环。j = 1
正在执行外部循环。i = 2
正在执行内部循环。j = 0
正在执行内部循环。j = 1
正在执行外部循环。i = 3
正在执行内部循环。j = 0
跳转以停止。i = 3
控制的转移
可以在 goto 语句中使用 语句或 switchcase 标签来指定分支超出初始值设定项的程序。此类代码是非法的,除非包含初始值设定项的声明在跳转语句发生的块所封闭的块中。
下面的示例显示了声明和初始化对象 total、ch 和 i 的循环。也存在将控制权传递过初始值设定项的错误 goto 语句。
// transfers_of_control.cpp
// compile with: /W1
// Read input until a nonnumeric character is entered.
int main()
{
char MyArray[5] = {'2','2','a','c'};
int i = 0;
while( 1 )
{
int total = 0;
char ch = MyArray[i++];
if ( ch >= '0' && ch <= '9' )
{
goto Label1;
int i = ch - '0';
Label1:
total += i; // C4700: transfers past initialization of i.
} // i would be destroyed here if goto error were not present
else
// Break statement transfers control out of loop,
// destroying total and ch.
break;
}
}
在前面的示例中,goto 语句尝试将控制权传递过 i 的初始化。但是,如果已声明但未初始化 i,则该传递是合法的。
在用作 total 语句的 chstatement 的块中声明的对象 和 while 在使用 break 语句退出此块时将被销毁。
注:相关教程知识阅读请移步到C++教程频道。










