4 回答
TA贡献2051条经验 获得超10个赞
goto。
当程序执行到这一句的时候直接跳转到goto 后面的行数。
用这种语句有悖于结构化的程序设计,所以书上讲得不多,但有时候用它能达到意想不到的结果
TA贡献1784条经验 获得超7个赞
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贡献1785条经验 获得超8个赞
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 关注
- 849 浏览
添加回答
举报