goto语句也称为无条件转移语句,其一般格式如:goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加半角冒号“:”。语句标号起标识语句的作用,与 goto 语句配合使用。
C语言不限制程序中使用标号的次数,但各标号不得重名。goto 语句的语义是改变程序流向, 转去执行语句标号所标识的语句。
goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。
但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
goto语句的争论
在20世纪60年代末和70年代初,关于 goto 语句的用法的争论比较激烈。主张从高级程序语言中去掉 goto 语句的人认为,goto 语句是对程序结构影响最大的一种有害的语句,他们的主要理由是: goto 语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。
去掉 goto 语句后,可直接从程序结构上反映程序运行的过程。这样,不仅使程序结构清晰,便于理解,便于查错,而且也有利于程序的正确性证明。
持反对意见的人认为, goto 语句使用起来比较灵活,而且有些情形能提高程序的效率。若完全删去 goto 语句,有些情形反而会使程序过于复杂,增加一些不必要的计算量。
/*goto 可以调到指定位置处执行新的程序,经常用来从多重循环内跳出来。如下程序所示:
*/
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
int main()
{
int i,j
int a[3][3]={1,2,3,4,5,6,7,8,9}
for(i=0i<3i++){
for(j=0j<3j++){
if(a[i][j] == 6)
{
goto Find
}
}
}
Find:
printf("%d %d\n",i,j)
getchar()
return 0
}
欢迎采纳,如有不明白的,可以追问^_^
^_^
^_^
用一个标识符表示程序中的某一行,用标号名加冒号组成,如main()
{
a:printf("asdf")/*a就是这一行的标号*/
}