跳轉語句 C C 中的goto語句

2021-10-25 12:38:34 字數 1288 閱讀 1824

無條件轉移控制流。

當使用其他語句不可能將控制轉移到所需位置時使用。

屬性(可選)goto標號;

goto 語句將控制轉移到標號所指定的位置。goto 語句必須與它所用的 標號 處於相同的函式中,它出現於標號的前後均可。

若控制的轉移退出了任何自動變數的作用域(例如通過回跳到這種變數宣告之前的位置,或向前跳出作為變數作用域的復合語句),則為所有退出作用域的變數以其構造順序的逆序呼叫析構函式。

goto 不能將控制轉移到 try 塊或 catch 子句之內,但能將控制轉移離開 try 塊或 catch 子句(遵循上述有關作用域中的自動變數的規則)

若控制被轉移進入了任何自動變數的作用域(例如通過向前跳過宣告語句),則程式非良構(不能編譯),除非進入作用域的所有變數擁有

標量型別,且宣告不帶初始化器

擁有平凡預設建構函式和析構函式的類型別,且宣告不帶初始化器

上述之一的 cv 限定版本

上述之一的陣列

(注意:相同規則適用於控制轉移的所有形式)

在 c 程式語言中,goto 語句的限制較少,並且能進入除變長陣列或可變修改指標之外的任何變數的作用域。

goto 語句導致無條件跳轉(控制的轉譯)到前附具名 標號 (必須與 goto 語句出現於同一函式中)的語句,除非此跳轉會進入變長度陣列或另一可變修改型別的作用域 (c99 起)。

標號 是乙個後隨冒號( : )和一條語句的的識別符號。標號是僅有的擁有函式作用域的識別符號:能在其所出現於的函式中的任何位置使用它們(在 goto 語句中)。任何語句前可以有多個標號。

goto lab1; // ok :進入常規變數的作用域 int n = 5;lab1:; // 注意未初始化 n ,如同以 int n; 宣告 // goto lab2; // 錯誤:進入二個 vm 型別的作用域 double a[n]; // vla int (*p)[n]; // vm 指標lab2:
若 goto 離開 vla 的作用域,則 vla 會被解分配(而且可能會被再分配,若再度執行其初始化):

#include  int main(void){ // goto 可用於簡單地離開多層迴圈 for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { printf("(%d;%d)

跳轉語句 Apache 跳轉語句

apache伺服器 備註 上面內容,做整站跳轉,一般在下面標籤上配置,例如在標籤內新增 allowoverride none require all denied 2 如果對某個目錄做https強制跳轉,則複製以下 rewriteengine on rewritebase yourfolder 的根...

C 入門5 12 跳轉語句之goto語句

goto語句使用格式 goto 識別符號 識別符號標識程式位置的方法 識別符號 作用 當程式執行到goto語句時,程式會直接跳轉到識別符號所標識的程式位置,繼續執行 舉個例子,利用goto語句實現選擇題 5!1.5!5 2.5!10 3.5!30 4.5!60 階乘 別看錯了。using syste...

使用goto實現迴圈,跳轉語句

計算從0 10的和 do while語句 do while版 int sum 0 int i 0 dowhile i 10 do while 版的 goto語句實現 int sum 0 int i 0 loop sum i i if i 10 goto loop done do while版 whi...