goto語句 慎用,但是可以用

2022-02-04 12:13:41 字數 1051 閱讀 7644

最近使用了goto語句,是因為if巢狀太深了,因此把錯誤處理同意了,直接使用goto語句。

舉例:

#include int main ()

printf("value of a: %d\n", a);

a++;

}while ( a < 20 );

loop:

printf("aa: %d\n", a);

printf("loop: %d\n", a);

a = 4;

printf("a = %d\n", a);

}return 0;

}

多層巢狀裡踹出去,或者有選擇的退到第幾層,這時候用goto是沒毛病的,label寫的明白點就行。注意不要鑽來鑽去,僅用於可控層數的break和continue,跳你就跳到某層迴圈結尾(大continue),或者緊貼在某層迴圈結束之後(大break)。另外記得用raii保護資源不要洩露。對這種場景goto是最優解,該goto你就goto,用各種其他語法來「重新實現goto」是毫無意義的,只會比goto繁瑣、更不可讀,而且沒有收益。比如說原本乙個完整的演算法核心邏輯,可能就那麼幾十行,需要goto跳幾個迴圈的,你給搞成狀態機、搞好幾個只會用一次的函式,再來幾個變數傳遞狀態,你說你幹嘛呢,好好一段**被你搞成個迷宮,就為了不寫「goto」?

造成這個現象的原因是c/c艹沒有控制層數的break和continue,用goto是在實現這個缺失的功能。

其他場景下一般沒必要用goto。

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

goto語句可以往後跳,也可以往前跳,且一直往前執行

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

goto 語句標號由乙個有效地識別符號和符號";"組成,其中,識別符號的命名規則與變數名稱相同,即由字母、數字和下劃線組成,且第乙個字元必須是字母或下劃線。執行goto語句後,程式就會跳轉到語句標號處,並執行其後的語句。

通常goto語句與if條件語句連用,但是,goto語句在給程式帶來靈活性的同時,也會使得使程式結構層次不清,而且不易讀,所以要合理運用該語句。

參考:

網域名稱可以用多久 假髮可以用多久?

這要看你說的是哪種假髮了,像是真人發手工鉤織的假髮一般保養好的話,用3 5年都是可以的,因為真人發只要定期噴灑護理液保持頭髮養分是可以用很長時間的,如果是纖維發這種假髮基本上戴個半年就完全沒法用了,很容易炸毛,打理起來也很麻煩的。所以如果打算長期佩戴建議還是選擇真人發手工鉤織的假髮吧,效果會更好!附...

普通SQL語句可以用Exec執行

例如儲存過名為 myprocedure use adventureworks create procedure myprocedure city varchar 20 as begin select from person.address end exec myprocedure city both...

網域名稱可以用多久 織髮髮套可以用多久?

織髮髮套屬於純手工鉤織的假髮,純手工鉤織的假髮正常的壽命是三到五年,新的時候狀態較好,髮型比較真實自然,舊了以後髮型較呆板,真實度稍差一些。也跟平時佩戴習慣 保養習慣有關。經常風吹日曬可能會縮短使用壽命,經常辦公室工作佩戴 加上洗護正確方式可以適當延長使用壽命,因人而異!織髮髮套使用壽命還是比較長久...