4 回答
TA貢獻1772條經驗 獲得超8個贊
goto語句也成為無條件轉移語句,其基本形式如下 :
goto 語句標號
語句標號由一個有效地標識符和符號";"組成,其中,標識符的命名規則與變量名稱相同,即由字母、數字和下劃線組成,且第一個字符必須是字母或下劃線。執行goto語句后,程序就會跳轉到語句標號處,并執行其后的語句。
通常goto語句與if條件語句連用,但是,goto語句在給程序帶來靈活性的同時,也會使得使程序結構層次不清,而且不易讀,所以要合理運用該語句。
示例:計算1~100的累加和,代碼如下所示:
#include <iostream.h>
#include <iostream.h>
//主函數
int main()
{
int i = 1;
int sum = 0;
loop:
if( i<=100 )
{
sum += i;
i++;
goto loop;
}
cout<<"求從1到100的和:"<<sum<<endl;
return 0;
}
運行結果:
求從1到100的和:5050
TA貢獻1776條經驗 獲得超12個贊
goto。
當程序執行到這一句的時候直接跳轉到goto 后面的行數。
goto 的意思非常好理解,即跳轉,如:
C:\Documents and Settings\doupi>goto /?
將 cmd.exe 導向到批處理程序中帶標簽的行。
GOTO label
label 指定批處理程序中用作標簽的文字字符串。
標簽必須單獨一行,并且以冒號打頭。
goto label 即跳轉到哪個分支塊執行,這是一種常見的程序分支結構.具體我們來看兩個例子:
例1:打印1到10
1 @echo off
2 :start
3 rem set 的/a 參數就是讓set 可以支持數學符號進行加減等一些數學運算,它的作用很多,后面介紹
4 set /a var+=1
5 echo %var%
6 rem 還記得上一篇中的if的用法嗎,比較數值
7 if %var% lss 10 goto start
8 pause >nul
例2:按判斷條件作跳轉
1 @echo off
2 set /p input=請輸入字母A或者B:
3 if "%input%"=="A" goto labelA
4 if "%input%"=="B" goto labelB
5 echo 輸入不正確
6 pause>nul
7 exit
8 :labelA
9 rem 當輸入了字母A時,就已經從第三行開始跳轉到第7行執行了.
10 echo 輸入了字母A
11 pause >nul
12 exit
13 :labelB
14 echo 輸入了字母B
15 pause >nul
16 exit
批處理及shell,實際上是一堆命令寫在一起,它們會一行一行的執行.自上而下.對于goto及配套label的用法,請注意以下幾點:
1. label是一個標簽,以冒號開關,最好用易識別的字符串常量來標識(不能用變量)
2. goto在執行到的后面緊跟的標簽時,會去全文件查找,執行第一個被找到的標簽(所以請不要弄幾個同名標簽,此類做法比較二,后果自已去總結)
3. 標簽執行完成后如果不被終止或者跳轉的話,程序仍會向下繼續執行.你可以理解:標簽實際就是個標識作用,它沒有真正意義上的把程序分塊(不像各個括號的作用).
4. 標簽可以被當作注釋來用,但它是被執行了,標準的注釋用的是::或者rem
5. 當你看到goto :eof時,不要驚訝, eof=end of file, :eof是一個固定通用標簽,它表示跳到該文件的末行.(但如果程序是執行在call中時,它是跳出call。
Goto語句有悖于結構化的程序設計,建議少用,會導致程序可讀性變差,但有時候用它能達到意想不到的結果。
- 4 回答
- 0 關注
- 738 瀏覽
添加回答
舉報
