C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)

业精于勤荒于嬉,行成于思毁于随。
今天我们一起来看一看之前没有说的goto语句,还有

第十一篇

  • 一、goto语句
  • 二、goto语句的实际应用

一、goto语句 C语言提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上,goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下,goto语句还是用的着的,最常见的用法就终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环
多层循环这种情况使用break是达不到目的的,break一次只能跳出一层,如下:
C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)
文章图片

The break statement terminates the execution of the nearest enclosing do, for, switch, or while statement in which it appears. Control passes to the statement that follows the terminated statement.
而goto语句可以实现我们的目的:
C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)
文章图片

The goto statement transfers control to a label. The given label must reside in the same function and can appear before only one statement in the same function.注意,goto语句不能跨函数调整
二、goto语句的实际应用 我们先看一个简单的例子:这是一个死循环:
#include int main() { again: printf("hehe\n"); goto again; return 0; }

C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)
文章图片

也就是跳转到again语句。
或者写一个关机程序:
#include #include #include #include int main() { char input[20] = { 0 }; system("shutdown -s -t 60"); //system是一个库函数,用来执行系统命令 again: printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪 就取消关机\n"); scanf("%s", &input); //判断 if (strcmp(input, "我是猪") == 0) { system("shutdown -a"); //取消关机 } else { goto again; } return 0; }

C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)
文章图片

这里我在书写程序的时候,忘记取消了,结果关机了,幸好网页有还原功能,不然这篇文章就要从头再写啦!还不赶紧拿走代码试一试?
如果代码出现问题,记得cmd写上这个哦:shutdown -a
C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)
文章图片

现在我们来看一下正确的使用goto语句(不是滥用):
#include #include int main() { int disaster = 0; for (int i = 0; i < 10; i++) { //这里可以写需要的代码 for (int j = 0; j < 10; j++) { //这里可以写需要的代码 for (int k = 0; k < 10; k++) { //这里可以写需要的代码 if (disaster) goto error; //当出现disaster情况的时候,就去执行error的语句 //这里可以写需要的代码 } } } error: system("cls"); //可以不写这个,这行代码只是假设error执行清屏 //这里可以写需要的代码 return 0; }

可以看出来,goto语句非常的好用,真的非常方便,所以才容易被滥用,所以平常尽量不要使用goto语句,滥用共同语句是一种很不好的行为,我们要有一个好的书写代码的习惯
【C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)】那么今天对goto语句的使用,就说到这里了,欢迎各位大大指正批评。

    推荐阅读