goto 的使用注意點

2021-07-06 07:09:04 字數 466 閱讀 4994

使用goto不能跳過變數得初始化;

例子:

…… goto test;

int i;

string str;

test:

…… 為什麼這裡通不過編譯呢?把string str;這一句拿到goto之前就可以了?

為什麼後面的int i;這一句不需要拿到goto之前呢?

解答:

在c++ primer中倒是提到,goto 不能向前跳過變數定義語句,給出的理由是可能引起未定義的變數使用。當確實要這樣使用時,需要把定義語句使用{}括起來。

據我推斷,基本型別如int這種,在棧中是被預設初始化的。而物件如string這種,是需要在執行時執行建構函式的,如果goto跳過string的定義,那string的建構函式就得不到執行,那麼string占用的棧空間就會處於未初始化狀態,可能c++認為這會導致風險,所以就禁止了這種情形的發生。

c語言中goto使用注意事項

在c語言中可以用goto來處理錯誤,但是要特別注意的是goto會順序執行下去,所以在goto中如果沒有分支或retun的話可能會出錯 include 氣泡排序,把陣列中的元素從大到小或從小到大列出 int main void int i,j,temp,count 0 goto out goto ou...

goto 語句的使用

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

goto語句的使用

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