background image

int sn=0,i;
for(i=1;i<=100;i++)
{
if(i==51) goto loop; /*如果 i 等于 51,则跳出循环*/
sn+=i; /*1+2+……+50*/
}
loop: ;
printf(%d\n,sn);
}
可以看出,这儿的 goto 语句和 break 作用很类似。
这儿的 loop: ;
printf(%d\n,sn);
也可以写成 loop: printf(%d\n,sn);
int main(int argc, char *argv[])
{
int sn=0,i;
for(i=1;i<=100;i++)
{
if(i==51) goto loop; /*如果 i 等于 51,则跳出本次循环*/
sn+=i; /*1+2+……+50+52+……+100*/
loop: ;
}
printf(%d\n,sn);
}
可以看出这儿的 loop 语句和 continue 的作用类似。
但是某些情况下又必须使用 goto 语句,否则会让程序大大臃肿。如:
int main(int argc, char *argv[]) 
{
int i,j,k;
printf(i j k\n);
for(i=0;i<2;i++)
for(j=0;j<3;j++)
for(k=0;k<3;k++)
{
if(k==2) goto loop;
printf(%d %d %d\n,i,j,k);
}
loop: ;

输出结果为: 
i j k
0 0 0
0 0 1
如果不使用 goto 语句,而使用 break,continue 语句,应该这样