关于goto

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的前提下,我们可以向代码中添加3break分别将3for循环结束,也可以加上# 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下运行通过】

(如有错误,敬请指正)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值