3 回答

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

TA貢獻1886條經(jīng)驗 獲得超2個贊
goto {標號}下面是一個例子:#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;
}這個利用goto做一個循環(huán),計算1+2+……+100的值,不過goto在程序設(shè)計中盡量不要用,容易使程序結(jié)構(gòu)混亂。

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