C语言循环结构之万恶之源goto语句

目录

前言

goto语句

语法

一个关机程序(仅供娱乐!!!)

goto语句实现

非goto实现

写在最后


前言

为啥说goto语句是万恶之源呢?相信每个人在网上下载东西的时候都有遇到过下载了某些恶意软件,安装完后,就疯狂给你推送一些广告。这类的病毒都是可以由goto语句实现的。


goto语句

C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。
for (...)
{
	for (...)
	{
		if (disaster)
			goto error;
	}
}
…
error:
if (disaster)
// 处理错误情况
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

语法

goto 标志;

标志:

说明:goto语句,可以转到标志所在处,标志可以自己命名,标志单独出现的位置必须带上冒号。标志可以放在程序的任意位置。

下面是使用goto语句的一个例子,然后使用循环的实现方式替换goto语句:

一个关机程序(仅供娱乐!!!

goto语句实现

#include <stdio.h>
#include <stdlib.h>
int main()
{
	char input[10] = { 0 };
	system("shutdown -s -t 60");
again:
	printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:");
	scanf("%s", input);
	if (0 == strcmp(input, "我是猪"))
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	return 0;
}

测试结果

非goto实现

#include <stdio.h>
#include <stdlib.h>
int main()
{
	char input[10] = { 0 };
	system("shutdown -s -t 60");
	while (1)
	{
		printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:");
		scanf("%s", input);
		if (0 == strcmp(input, "我是猪"))
		{
			system("shutdown -a");
			break;
		}
	}
	return 0;
}

 关于shutdown命令的扩展-(请点这里)


写在最后

有错误还望指出,有问题疑惑可以在评论区讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值