3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
goto是無條件跳轉(zhuǎn),只能在goto語句出現(xiàn)處改變控制流,無法通過本身返回。要用goto返回,可以定義多個(gè)label,在不同位置配合不同label使用goto語句。
label在函數(shù)內(nèi)定義,作用域就是整個(gè)函數(shù),和其它名稱一樣無法改變。由于不是左值,它沒有生存期,僅在編譯期有意義。
everyone998 錯(cuò)誤。編譯器至少會(huì)對label標(biāo)識(shí)符進(jìn)行語義檢查。函數(shù)調(diào)用和goto是不同的。函數(shù)調(diào)用或返回時(shí),一般的實(shí)現(xiàn)中需要根據(jù)調(diào)用約定清理堆棧。調(diào)用時(shí)先保存現(xiàn)場,復(fù)制實(shí)際參數(shù),然后才是跳轉(zhuǎn),并不是直接無條件跳轉(zhuǎn)那么簡單。也因此goto語句無法跨函數(shù)跳轉(zhuǎn)。

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
goto {標(biāo)號}下面是一個(gè)例子:#include <iostream.h>void main()
{
int i=1,s=0;
re:
s=s+i;
if (i<100)
{
i=i+1;
goto re;
}
cout<<s<<endl;
}這個(gè)利用goto做一個(gè)循環(huán),計(jì)算1+2+……+100的值,不過goto在程序設(shè)計(jì)中盡量不要用,容易使程序結(jié)構(gòu)混亂。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
自己定義一個(gè)標(biāo)記,比如LOOP: i--; goto LOOP;這樣就可以循環(huán)i--的操作。 但是這種編程方式已經(jīng)被廢棄了
- 3 回答
- 0 關(guān)注
- 1094 瀏覽
添加回答
舉報(bào)