1. 程式人生 > >c++中goto語句用法

c++中goto語句用法

goto只能在函式體內跳轉,不能跳到函式體外的函式。即goto有區域性作用域,需要在同一個棧內。

需要在要跳轉到的程式段起始點加上標號。如下例中的part2。

1.goto 語句可用於跳出深巢狀迴圈


  
  1. #include<iostream>
  2. using namespace std;
  3. int
    main()
  4. {
  5. for( int i= 0;i< 10;i++)
  6. for( int j= 0;j< 10;j++)
  7. for( int
    k= 0;k< 10;k++)
  8. {
  9. cout<<i*j*k<< " ";
  10. if( 216==i*j*k)
  11. goto
    part2; //break是跳不出多重迴圈的
  12. }
  13. cout<< "此處被省略"<< endl;
  14. part2:
  15. cout<< "part2"<< endl;
  16. system( "pause");
  17. }

2.goto語句可以往後跳,也可以往前跳


  
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int x,sum= 0;
  6. //定義標號L1
  7. L1: cout<< "x=";
  8. cin>>x;
  9. if (x== -1)
  10. goto L2; //當用戶輸入-1時,轉到L2語句處
  11. else
  12. sum+=x;
  13. goto L1; //只要使用者沒有輸入-1,則轉到L1語句處,程式一直將使用者的輸入默默地累加到變數sum中。
  14. //定義標號L2
  15. L2: cout<< "sum="<<sum<< endl; //一旦轉到L2,將輸出累計結果,程式執行結束。
  16. system( "pause");
  17. }

3.也可以跳出switch,或者在case之間進行跳轉

如:


  
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. char a;
  6. L1:
  7. cout<< "請輸入一個字元"<< endl;
  8. cin>>a;
  9. switch(a)
  10. {
  11. case 'a':
  12. cout<< "case a"<< endl;
  13. goto L1;
  14. //break;
  15. L2:
  16. case 'b':
  17. cout<< "case b"<< endl;
  18. break;
  19. case 'c':
  20. cout<< "case c"<< endl;
  21. // break;
  22. goto L2;
  23. default:
  24. break;
  25. }
  26. system( "pause");
  27. }