goto语句

本文探讨了C语言中的goto语句,虽然它允许无条件跳转,但通常不建议使用,因为它破坏了结构化编程的原则。示例展示了goto语句如何与if语句结合构建循环结构,以及在多层循环中跳出。尽管如此,使用break和continue语句通常更符合编程最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。

goto语句为无条件转向语句,他的一般形式为:

goto 语句标号;

语句标号:用标识符表示,

标识符:由下划线、字母、数字组成,注:不能用数字开头

但是一般不建议使用goto语句,因为它的用法不符合结构化原则,只有在不得已(例如能大大提高效率)时使用。

从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
2、goto语句的一般有两个用法:
1.与if语句一起构成循环结构
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//代码1
int main()
{
	char input[10] = { 0 };//输入的字符串
	system("shutdown -s -t 60");//system是一个库函数,可以执行系统命令,
again:
	printf("请注意你的电脑一分钟内关机,如果输入:我是猪,就取消关机\n");
	scanf("%s", input);//数组本身就是地址
	if (0 == strcmp(input, "我是猪"))//strcmp判断两个字符串是否相等,注:不能直接使用==
	{
		system("shutdown -a");//取消关机
	}
	else
	{
		printf("输入错误,你不乖!\n");
			goto again;
	}
	return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char input[10] = { 0 };
	system("shutdown -s -t 60");
	printf("请注意你的电脑一分钟内关机,如果输入:我是猪,就取消关机\n");
	
	while (1)
	{
		scanf("%s", input);//数组本身就是地址
		if (0 == strcmp(input, "我是猪"))//strcmp判断两个字符串是否相等,注:不能直接使用==
		{
			printf("小乖乖,这就取消关机\n");
			system("shutdown -a");//取消关机
			break;
		}
		else
		{
			printf("输入错误,你不乖!\n");
		}
	}
	return 0;
}

代码1和代码2是一样的,运行结果

有兴趣的可以搜索shutdown 百度一下。

2.从循环体中跳转到循环体外,但在C语言中使用break语句和continue语句也可跳出本层循环和结束本次循环。

最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
注:break一次只能跳出一层循环
for(...)
   for(...)
  {
       for(...)
      {
           if(disaster)
               goto error;
      }
  }
   
error:
if(disaster)
        // 处理错误情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值