goto语句——C语言

在C语言中有一个只要一不小心就会产生bug的语句,那就是goto语句。

C语言提供了可以滥用的goto语句和标记跳转的符号
从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。

但是在某些场合下goto语句还是用得到的,最常见的用法就是***终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。***这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层循环。

对于goto语句的用法我们看下面的代码:

#include<stdio.h>
int main()
{
	printf("你好,中国!\n");
	goto again;
	printf("hello United States!\n");
again:
	printf("hello world!");
	return 0;
}

运行结果是:在这里插入图片描述
可以看出程序直接跳过hello United States!将“hello world!”打印在屏幕上;

接下来在介绍一个关机程序:

#include<stdio.h>
#include<Windows.h>
#include<string.h>
int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 60");//shutdown -s -t xxx 电脑将在xxx秒后自动关机
again:
	printf("请注意:您的电脑将会在一分钟后自动关机!\n如果您不想该电脑关机的话,请输入:我是猪\n");
	scanf("%s", input);
	if (strcmp(input, "我是猪")==0)//比较两个字符串——strcmp()  需引用头文件string.h
	{
		system("shutdown -a");//shutdown -a 是终止关机程序
	}
	else
	{
		printf("输入无效!\n");
		goto again;
	}
	return 0;
}

在这里goto语句充当循环作用!
可以用循环语句代替:

#include<stdio.h>
#include<Windows.h>
#include<string.h>
int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 60");
	while (1)//将判断条件设为1,循环将一直执行
	{
		printf("请注意:您的电脑将会在一分钟后自动关机!\n如果您不想该电脑关机的话,请输入:我是猪\n");
		scanf("%s", input);
		if (strcmp(input, "我是猪") == 0)
		{
			system("shutdown -a");
			break;
		}
		else
		{
			printf("输入无效!\n");
		}
	}
	return 0;
}

总之一般goto语句都可以被替换,所以尽量少用goto语句!
但是goto语句也有优点:终止程序在某些深度嵌套的结构的处理过程!

for(...) 
{
   for(...) 
   {
      while(...)
       {
         if(...) goto stop;
         .
         .
         .
      }
   }
}
stop:

像这样使用goto语句将会方便很多,使用break将是不明智的选择!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值