#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> /*goto语句 C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。*/ /*运行cmd,输入shutdown -s -t 60设置的s代表关机,t表示设置时间关机,60秒之后关机,动用的是shutdown这个工具 */ // shutdown -a取消关机 int main() { char input[20] = { 0 }; //关机 //C语言提供了一个函数:system()执行系统命令的 system("shutdown -s -t 60");//头文件是stdlib.h assert: printf("电脑将会在60s后强制关机,除非输入我是猪便可取消关机:"); scanf("%s", input); if (strcmp("我是猪", input) == 0) { system("shutdown -a"); printf("恭喜小猪猪你,电脑已取消关机了"); } else { goto assert; } return 0; } |
说明:goto assert执行后会程序会回到aeert:
该语句不要滥用不然会容易造成程序逻辑混乱
使用goto跳出多层循环
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> /*但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程,例如一次跳出两层或多层循环,但只能在一个函数内跳转,不能跨函数,否则会报错*/ int main() { int disaster = 1; for (;;) for (;;) { for (;;) { if (disaster) goto error; } } error ://在多次循环嵌套下,一个break只能跳出一层循环 if (disaster) { ; } return 0; } //goto语句在其它场合最好不要使用 |