4.0、C语言——goto语句
C语言中提供了可以随意滥用的goto语句和标记跳转的标号【这里建议大家在写代码的过程中尽量不要使用 goto 语句,在实在没有办法的情况下再去使用】
从理论上 goto 是没有必要的,实践中没有 goto 语句也可以很容易的写出代码
但是某些场合下 goto 语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环
这种情况使用break是达不到目的的,他只能从最内层循环退出到上一层的循环
下面是使用 goto 语句的一个例子:
int main() {
again:
printf("goto again");
goto again;
return 0;
}
运行的结果就是 不断的打印 goto again 陷入这么一个死循环
再举一个例子:
int main() {
printf("goto again");
goto again;
printf("被 goto 跳过去了");
again:
printf("goto 跳转至此...");
return 0;
}
这里 goto 也打乱了我们代码的正常执行顺序,直接跳过了一行代码;所以用了 goto 语句之后会很混乱可能会导致 bug,
所以我们应该在适合的情景下使用该 goto 语句:
上图中有三个 for 嵌套循环,如果要跳出最外面那个for至少需要三个 break,但是 goto 语句只用这一句代码就可以直接跳出三层循环
下面给大家看一个好玩的代码 -> 打开程序执行 -> 提示如果在60内不输入 "取消关机",电脑将自动关机~
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main() {
char input[20] = {0};
system("shutdown -s -t 60");
again:
printf("请注意,你的电脑将在1分钟内关闭,如果输入:取消关机,将终止该命令~ \n 请输入>:");
scanf("%s",&input);
if (strcmp(input,"取消关机") == 0) {
system("shutdown -a");
}
else {
goto again;
}
return 0;
}
那么这里也用到了 goto() 函数,虽然说用 while() 循环也能实现