十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
goto 语句是最经典的计算机语句,叫“无条件转向语句”,执行到它,无条件地跳到指定的标号所在地。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、雅安服务器托管、营销软件、网站建设、五河网站维护、网站推广。
下面程序读入fin_list的一行,每一行是一个文件名。
[许多语句] 用来处理一个文件,处理完了goto entrance 又回到开始,再读一个文件名。读到fin_list结束,goto No_More,跳到No_More:
退出这段程序。
entrance:
if ( fgets(one_line,200,fin_list) ==NULL) goto No_More;
....[许多语句]
....
goto entrance;
No_More: fclose(fin_list);
转向语句与标号配合使用。函数块里,标号名不可重名,(标号名如同路标)。例如,可以有多个 goto No_More 语句,但只可有 一个No_More:;
转向语句只能从程序内层转向同一层或外层,但不可转向它的内层。
例如(正确的):
for (j=0;jn;j++){
Lab1:;
for (i=0;im;i++){
...
if (..) goto Lab1;
if (..) goto Lab2;
if (..) goto Lab3;
if (..) goto Lab4;
Lab2:;
...
}
...
Lab3:;
}
Lab4:;
例如(错的):
for (j=0;jn;j++){
if () goto Lab1:;
for (i=0;im;i++){
...
Lab1:;
...
}};
goto 不可跳出自己在的函数块。
C语言中的goto是一种跳转语句,类似于HTML语言中的锚点。
在执行代码时系统检查到有”goto XXX“,就会跳过一段代码,不执行,直接执行“XXX:”后面的代码。
goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。
i=0;
start:
c=a+b;
a=b;
printf(“%d”,i);
for(i=0;i100;i++)
{
if(i==50)
goto start
}
这是随便打的一个程序没有任何意义,就是当i=50的时候会跳到goto后面所指向的位置(在此处是c=a+b;前面),goto在C中是一个及有问题的语句,所有用goto的语句都可以用别的语句实现,使用goto语句极大的降低程序的可读性,最好不要使用这条语句
goto语句可以使程序在没有任何条件的情况下跳转到指定的位置,所以goto语句又被称为是无条件跳转语句。
它的语法如下
goto label;
//其它代码
label:
其中,label为我们自己定义的一个标签,定义的规则与变量的命名相同,它的位置是不固定的,它可以写在goto语句的后面,也可以写在它的前面,然而goto语句只能在一个函数内部跳转,它并不允许跳转出一个函数外部。
int day = 1;
loop:
if (day = 31)
{
printf("%d\n", day);
day++;
goto loop;
}
上面程序就是利用了goto和if语句来实现了循环功能,它与while实现的循环功能一样,其中loop为我们定义的一个label(标签)。
扩展资料:
使用goto语句的建议
1) 使用goto语句只能goto到同一函数内,而不能从一个函数里goto到另外一个函数里。
2) 使用goto语句在同一函数内进行goto时,goto的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。
3) 不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。
4)应该避免向两个方向跳转。这样最容易导致"面条代码"。
参考资料来源:百度百科-goto语句
goto语句也称为无条件转移语句,其一般格式如下:
goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与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处继续接收用户输入的字符;如果用户输入回车符,那么跳出共同语句,执行printf语句。