goto,即无条件跳转指令,常与if搭配使用具体使用情况将举例说明
例1:
#include <stdio.h>
int main(void)
{
goto ss;
printf("BBBB\n");
ss:
printf("AAAA\n");
return 0;
}
输出结果为:
由上面的结果可知,执行goto语句时,会直接跳转到语句标号(这里指的是ss)以后的语句,所以第6行代码没有被执行
goto语句一直为人们所诟病,因其使得代码可读性变差且不易维护,
然而,正像另一些人说的,在有所限制的情况下使用它也会有一定的方便之处,比如说像下面的例子
例2:
# include <stdio.h>
int main(void)
{
int x;
int one, two, five;
printf("请输入你所需要的钱数(只需输入一个数字,单位为元):");
scanf("%d", &x);
for (one=1; one<x*10; one++)
{
for (two=1; two<x*10/2; two++)
{
for (five=1; five<x*10/5; five++)
{
if (one + two*2 + five*5 == x*10)
{
printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", one, two, five, x);
goto out;
}
}
}
}
out:
return 0;
}
输入一个数的结果为:
这个程序是判断需要多少个1角、2角和5角可以组成输入的钱数,如果注释掉19行的语句,则会将所有的情况输出,但是,如果我们只想要一个结果,则需要在一个输出后结束整个程序,当然,在不使用goto的前提下,我们可以向代码中添加3个break分别将3个for循环结束,也可以加上# include <stdlib.h>头文件后在一个结果输出后用exit(0) 终止程序,但是,如果使用goto语句,则会相对简单一些,既可以直接像上面程序那样,输出后直接跳转到最后
goto也可以构成循环
例3:
# include <stdio.h>
int main(void)
{
int i = 0;
ss:
if (i < 5)
{
printf("最近比较忙\n");
if (i == 4)
return 0;
}
i++;
goto ss;
return 0;
}
输出结果为:
对于goto语句,因为其缺点,而且平时基本用不到,再加上还有switch/case这样的替代品,所以许多新手根本不会去了解,而且老师们一般也都不讲或一句话带过,说来惭愧,我以前也不知道这个怎么用的,现在觉得它的确在一些方面有些用处,就记录一下,如果以后看到相关的更多的知识,会予以补充
【所有代码均在windows系统下C-Free5.0下运行通过】
(如有错误,敬请指正)