goto语言
C语言中提供了可以随意滥用的goto语句和标记跳转的标号.
从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。
.这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。下面是使用goto语句的一个例子:
一个关机程序
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//关机程序
//只要运行起来,电脑就会在一分钟内关机
//shutdown -s -t 60 一分钟关机命令
//shutdown -a 取消关机命令
//c语言提供了一种函数专门执行系统命令的函数:system()-执行系统命令
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 1800");// system 在 stdlib.h
again:
printf("请注意你的电脑还有半小时就关机,如果输入:我是猪就取消关机\n");
scanf("%s", input);//数组名本来就是地址
/*if (input == "我是猪")*/ //两个字符串比较是不能用==,应该使用strcmp函数
if (strcmp(input, "我是猪") == 0) //strcmp函数比较之后正确返回0
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
当然这里面的goto是可以替换掉的
char input[20] = { 0 };
system("shutdown -s -t 1800");
while (1)
{
printf("请注意你的电脑还有半小时就关机,如果输入:我是猪就取消关机\n");
scanf("%s", input);
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
}
}
return 0;
那么goto什么时候用最好呢?
主要用于跳出复杂多重的循环