C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易地写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。
这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
下面是使用goto语句的一个例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//关机程序
int main()
{
char input[10] = { 0 };//储存输入的内容,大小是10个字节
system("shutdown -s -t 60");//shutdown -s,设置关机,-t设置时间关机
//system() - 执行系统命令
again:
printf("电脑在一分钟内关机,输入“取消关机”终止命令\n请输入>:");
scanf("%s", &input);
if (strcmp(input, "取消关机")==0)//比较两个字符串 - strcmp()
{
system("shutdown -a"); //shutdown -a取消关机
}
else
{
goto again;
}
return 0;
}
goto语言真正适合的场景如下:
for (...)
{
for (...)
{
if (disaster)
goto error;
}
}
...
error:
if(disaster)
//处理错误情况