程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++流程掌握頂用於跳轉的return和goto語句進修教程

C++流程掌握頂用於跳轉的return和goto語句進修教程

編輯:關於C++

C++流程掌握頂用於跳轉的return和goto語句進修教程。本站提示廣大學習愛好者:(C++流程掌握頂用於跳轉的return和goto語句進修教程)文章只能為提供參考,不一定能成為您想要的結果。以下是C++流程掌握頂用於跳轉的return和goto語句進修教程正文


return 語句
終止函數的履行並前往對換用函數的掌握(或對操作體系的掌握,假如您從 main 函數轉移掌握)。緊接在挪用以後在挪用函數中恢復履行。
語法

return [expression];

備注
expression 子句(假如存在)將轉換為函數聲明中指定的類型,就像正在履行初始化一樣。從該類型的表達式到 return 類型的函數的轉換會創立暫時對象。

expression 子句的值將前往挪用函數。假如省略該表達式,則函數的前往值是不肯定的。結構函數和析構函數和類型為 void的函數沒法在 return 語句中指定表達式。一切其他類型的函數必需在 return 語句中指定表達式。
當掌握流加入關閉函數界說的塊時,成果將與履行不帶表達式的 return 語句所取得的成果一樣。這關於聲明為前往值的函數有效。
一個函數可以包括隨意率性數目的 return 語句。
以下示例將一個表達式與 return 語句一路應用來獲得兩個整數中的最年夜者。

// return_statement2.cpp
#include <stdio.h>

int max ( int a, int b )
{
  return ( a > b ? a : b );
}

int main()
{
  int nOne = 5;
  int nTwo = 7;

  printf_s("\n%d is bigger\n", max( nOne, nTwo ));
}

goto 語句

goto 語句無前提地將掌握權轉移給由指定的標識符標志的語句。
語法

goto identifier;

備注
由 identifier 指定的標志語句必需位於以後函數中。一切 identifier 稱號都是外部定名空間的成員,是以不會攪擾其他標識符。
語句標簽僅對 goto 語句成心義;其它情形下,語句標簽將被疏忽。不克不及從新聲明標簽。
盡量應用 break、continue 和 return 語句而不是 goto 語句是一種好的編程作風。然則,由於 break 語句僅加入輪回的一個級別,所以能夠必需應用 goto 語句加入深度嵌套的輪回。

在此示例中,當 i 等於 3 時,goto 語句將掌握權轉移給標志為 stop 的點。

// goto_statement.cpp
#include <stdio.h>
int main()
{
  int i, j;

  for ( i = 0; i < 10; i++ )
  {
    printf_s( "Outer loop executing. i = %d\n", i );
    for ( j = 0; j < 2; j++ )
    {
      printf_s( " Inner loop executing. j = %d\n", j );
      if ( i == 3 )
        goto stop;
    }
  }

  // This message does not print: 
  printf_s( "Loop exited. i = %d\n", i );

  stop: 
  printf_s( "Jumped to stop. i = %d\n", i );
}

輸入:

正在履行內部輪回。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 語句加入此塊時將被燒毀。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved