goto意為“跳轉(zhuǎn)”的意思,顧名思義,跳轉(zhuǎn)肯定要有目的地,不然跳到哪里去?所以goto后面應(yīng)該跟一個標(biāo)簽(該標(biāo)簽表示位置);
成都創(chuàng)新互聯(lián)長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為文峰企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,文峰網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
例如用loop標(biāo)簽標(biāo)記一個跳轉(zhuǎn)點,所那么goto
loop;就實現(xiàn)了跳轉(zhuǎn)到loop標(biāo)簽標(biāo)記的位置。
loop:
code;
……
……
goto
loop;
goto語句也稱為無條件轉(zhuǎn)移語句,其一般格式如下:
goto 語句標(biāo)號; 其中語句標(biāo)號是按標(biāo)識符規(guī)定書寫的符號, 放在某一語句行的前面,標(biāo)號后加冒號(:)。語句標(biāo)號起標(biāo)識語句的作用,與goto 語句配合使用。
#include"stdio.h"
int?main(void)
{
int?n=0;
printf("input?a?string?:\n");
loop:?if(getchar()!='\n')
{
n++;
goto?loop;
}
printf("%d",n);
}
以上面的例子來說明,如果用戶輸入的字符不是回車符,那么返回loop處繼續(xù)接收用戶輸入的字符;如果用戶輸入回車符,那么跳出共同語句,執(zhí)行printf語句。
goto語句也稱為無條件轉(zhuǎn)移語句,其一般格式如下: goto 語句標(biāo)號; 其中語句標(biāo)號是按標(biāo)識符規(guī)定書寫的符號, 放在某一語句行的前面,標(biāo)號后加冒號(:)。語句標(biāo)號起標(biāo)識語句的作用,與goto 語句配合使用。
如: label: i++;
loop: while(x7);
goto loop;
C語言不限制程序中使用標(biāo)號的次數(shù),但各標(biāo)號不得重名。goto語句的語義是改變程序流向, 轉(zhuǎn)去執(zhí)行語句標(biāo)號所標(biāo)識的語句。
goto語句通常與條件語句配合使用。可用來實現(xiàn)條件轉(zhuǎn)移, 構(gòu)成循環(huán),跳出循環(huán)體等功能。
擴展資料:
go to語句使用原則:
1、使用goto語句只能goto到同一函數(shù)內(nèi),而不能從一個函數(shù)里goto到另外一個函數(shù)里。
2、使用goto語句在同一函數(shù)內(nèi)進(jìn)行g(shù)oto時,goto的起點應(yīng)是函數(shù)內(nèi)一段小功能的結(jié)束處,goto的目的label處應(yīng)是函數(shù)內(nèi)另外一段小功能的開始處。
3、不能從一段復(fù)雜的執(zhí)行狀態(tài)中的位置goto到另外一個位置,比如,從多重嵌套的循環(huán)判斷中跳出去就是不允許的。
4、應(yīng)該避免向兩個方向跳轉(zhuǎn)。這樣最容易導(dǎo)致"面條代碼"。
參考資料:百度百科-goto語句
goto
用在內(nèi)層循環(huán)中比較合適,
用
break
只能跳出內(nèi)層循環(huán),
而
goto
可以直接跳出最外層循環(huán),在合理的地方使用就可以了。
不要頻繁的使用goto,過多的使用goto語句,會使程序混亂
從理論上講,goto語 句是沒有必要的,實踐中不使用goto語句也可以很容易地寫出代碼
但是,在某些場合下goto語句還是用得著的。
最常見的用法是終止程序在某些深度嵌套 的結(jié)構(gòu)中的處理過程,
例如一次跳出兩層或多層循環(huán)。這種情況下使用break語句是不能達(dá) 到目的的,
它只能從最內(nèi)層循環(huán)退出到上一級的循環(huán)
所有使用了goto語句的程序代碼都能改寫成不帶goto語句的程序,
但可能會增加一些 額外的重復(fù)測試或變量
標(biāo)號的命名同變量命名的形式相同,標(biāo)號的后面要緊跟一個冒號。
標(biāo)號可以位于對應(yīng)的 goto語句所在函數(shù)的任何語句的前面。標(biāo)號的作用域是整個函數(shù)。
goto 是轉(zhuǎn)向語句
goto 標(biāo)號;
例
int x=1;
biaohao:
x=x+1;
if(x100)
goto biaohao;
cout"x=100"endl;
//當(dāng)x小于100,執(zhí)行if 后面的goto語句,
于是轉(zhuǎn)跳到biaohao處執(zhí)行biaohao后面的語句x=x+1,接著if語句,
如此反復(fù)。。。。。。,
直到x=100 if語句括號表達(dá)式為假不執(zhí)行后面的goto語句,
于是跳過執(zhí)行cout語句輸出x=100這幾個字符