goto語句的正確運用

2021-08-20 08:41:23 字數 1000 閱讀 5627

最近學習obs原始碼,外掛程式庫里是有許多goto語句,由於對goto語句不太了解,踩了很多坑。記錄一下:

1 含義,goto語句也稱為無條件轉移語句;

goto語句的語義是改變程式流向, 轉去執行語句標號所標識的語句;

goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。

2 例子

1)跳出迴圈

voidmain()

}

/* this message does not print: */

printf("loop exited. i = %d\n", i );

stop:printf("jumped to stop. i = %d\n", i );

}

2)switch判斷

voidmain()

stop:printf("jumped to stop. i = %d\n", i );

}

注意:goto標籤相當於普通語句,即使沒有進入迴圈,不符合switch中的任意一項,程式會執行一次標籤,並繼續執行標籤以後的語句

goto 語句的使用

goto語句包括兩個部分 goto和乙個標籤名稱。標籤的命名遵循與命名變數相同的約定。goto part1 標籤需要寫上工作的語句。part1 printf there is part1 n 觀察以下程式的執行結果 可以看到,當執行 goto 語句之後,程式就跳轉到part1 printf ther...

goto語句的使用

goto語句使用一定要在判斷中進行操作,如果再順序語句中,隨意的進行跳轉,那麼程式會具備極大的不確定性,比如前面定義了乙個變數,後面值已經改變了,然後goto又跳轉到定義處,那麼這個變數是定義的值還是後面改變的值?量大,這就不好控制了,所以一定要約束goto語句。include include in...

goto語句的本質

除非跳出多個迴圈巢狀和遠端注入技術,否則盡量少用goto goto會降低程式的可讀性,讓 難以除錯 利用遞迴也可以實現迴圈結構和do while類似 define crt secure no warnings include include includevoid main1 void main2 ...