C++ goto語句
goto語句提供無條件跳轉從跳轉到標記聲明相同的功能。
注意:使用goto語句不鼓勵使用,因為它使得難以追蹤程序的控製流程,使程序難以理解,難以修改。使用goto任何程序可以改寫,以便它不需要轉到。
語法
在C++中goto語句的語法是:
goto label; .. . label: statement;
其中:label是標識標簽的語句標識符。帶標簽的語句是前麵有一個標識符,後跟一個冒號(:)任何聲明。
流程圖:
例子:
#include <iostream> using namespace std; int main () { // Local variable declaration: int a = 10; // do loop execution LOOP:do { if( a == 15) { // skip the iteration. a = a + 1; goto LOOP; } cout << "value of a: " << a << endl; a = a + 1; }while( a < 20 ); return 0; }
當上述代碼被編譯和執行時,它產生了以下結果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 16 value of a: 17 value of a: 18 value of a: 19
一個很好用使用goto語句的例子是從一個深度嵌套程序退出。例如,請考慮下麵的代碼片段:
for(...) { for(...) { while(...) { if(...) goto stop; . . . } } } stop: cout << "Error in program. ";
省去了轉到將迫使要執行多個附加測試。一個簡單的break語句也不會工作,因為這隻會導致程序從最裡麵的循環退出。