goto語(yǔ)句稱為無(wú)條件轉(zhuǎn)移語(yǔ)句,通常與條件語(yǔ)句配合使用??捎脕?lái)實(shí)現(xiàn)條件轉(zhuǎn)移,?構(gòu)成循環(huán),跳出循環(huán)體等功能。但是,在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語(yǔ)句,?以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。而且,goto語(yǔ)句一般可以用其他語(yǔ)句來(lái)代替。
成都創(chuàng)新互聯(lián)公司是一家集成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站頁(yè)面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)站制作公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁(yè)面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。
當(dāng)然,goto語(yǔ)句也有其優(yōu)勢(shì),例如可以用goto語(yǔ)句一次性跳出多重循環(huán),而不需要使用多個(gè)break語(yǔ)句一步一步地跳出,從而使代碼更為簡(jiǎn)潔。
在C語(yǔ)言中使用goto語(yǔ)句的注意事項(xiàng)如下:
使用goto語(yǔ)句只能轉(zhuǎn)移到到同一函數(shù)內(nèi),而不能從一個(gè)函數(shù)里轉(zhuǎn)移到另外一個(gè)函數(shù)里。
使用goto語(yǔ)句在同一函數(shù)內(nèi)進(jìn)行轉(zhuǎn)移時(shí),轉(zhuǎn)移的起點(diǎn)應(yīng)是函數(shù)內(nèi)一段小功能的結(jié)束處,goto的目的label處應(yīng)是函數(shù)內(nèi)另外一段小功能的開(kāi)始處。
不能從一段復(fù)雜的執(zhí)行狀態(tài)中的位置goto到另外一個(gè)位置,比如,從多重嵌套的循環(huán)判斷中跳出去就是不允許的。
應(yīng)該避免向兩個(gè)方向跳轉(zhuǎn)。這樣最容易導(dǎo)致“面條代碼”。
所以說(shuō),goto語(yǔ)句要小心使用。
goto語(yǔ)句可以使程序在沒(méi)有任何條件的情況下跳轉(zhuǎn)到指定的位置,所以goto語(yǔ)句又被稱為是無(wú)條件跳轉(zhuǎn)語(yǔ)句。
它的語(yǔ)法如下
goto label;
//其它代碼
label:
其中,label為我們自己定義的一個(gè)標(biāo)簽,定義的規(guī)則與變量的命名相同,它的位置是不固定的,它可以寫(xiě)在goto語(yǔ)句的后面,也可以寫(xiě)在它的前面,然而goto語(yǔ)句只能在一個(gè)函數(shù)內(nèi)部跳轉(zhuǎn),它并不允許跳轉(zhuǎn)出一個(gè)函數(shù)外部。
int day = 1;
loop:
if (day = 31)
{
printf("%d\n", day);
day++;
goto loop;
}
上面程序就是利用了goto和if語(yǔ)句來(lái)實(shí)現(xiàn)了循環(huán)功能,它與while實(shí)現(xiàn)的循環(huán)功能一樣,其中l(wèi)oop為我們定義的一個(gè)label(標(biāo)簽)。
擴(kuò)展資料:
使用goto語(yǔ)句的建議
1) 使用goto語(yǔ)句只能goto到同一函數(shù)內(nèi),而不能從一個(gè)函數(shù)里goto到另外一個(gè)函數(shù)里。
2) 使用goto語(yǔ)句在同一函數(shù)內(nèi)進(jìn)行g(shù)oto時(shí),goto的起點(diǎn)應(yīng)是函數(shù)內(nèi)一段小功能的結(jié)束處,goto的目的label處應(yīng)是函數(shù)內(nèi)另外一段小功能的開(kāi)始處。
3) 不能從一段復(fù)雜的執(zhí)行狀態(tài)中的位置goto到另外一個(gè)位置,比如,從多重嵌套的循環(huán)判斷中跳出去就是不允許的。
4)應(yīng)該避免向兩個(gè)方向跳轉(zhuǎn)。這樣最容易導(dǎo)致"面條代碼"。
參考資料來(lái)源:百度百科-goto語(yǔ)句
go
to
是轉(zhuǎn)向語(yǔ)句,按其英文含義就可理解
用法
標(biāo)號(hào):
語(yǔ)句;
go
to
標(biāo)號(hào);
或者
go
to
標(biāo)號(hào);
標(biāo)號(hào):
語(yǔ)句;
標(biāo)號(hào)和goto必須包括處于同一個(gè)函數(shù)內(nèi)
標(biāo)號(hào)的寫(xiě)法跟變量名一樣不能和關(guān)鍵詞相同,后面必須帶冒號(hào)
當(dāng)程序執(zhí)行到go
to這個(gè)語(yǔ)句時(shí),程序就轉(zhuǎn)跳到標(biāo)號(hào)后面的語(yǔ)句去了
例
int
x=1;
語(yǔ)句1:
x=x+1;
if(x100)
goto
語(yǔ)句2;
cout"x=100"endl;
當(dāng)x小于100,執(zhí)行if
后面的goto語(yǔ)句,于是轉(zhuǎn)跳到語(yǔ)句2處執(zhí)行語(yǔ)句1后面的語(yǔ)句x=x+1,接著if語(yǔ)句,
如此反復(fù)。。。。。。,直到x=100
if語(yǔ)句括號(hào)表達(dá)式為假不執(zhí)行后面的goto語(yǔ)句,
于是跳過(guò)執(zhí)行cout語(yǔ)句輸出x=100這幾個(gè)字符