这是初识c语言的第五篇文章了

虽然看的人不多,但我不会放弃哒

毕竟这也是给我自己的一个学习记录,不想写日记就用这个代替了!

goto语句

c语言中提供了可以随意使用的goto语句和标记跳转的标号

理论上来说,goto语句没什么必要,因为我们可以用whlie等循环语句来替代它

  • goto是类循环语句,其本身是关键字

goto语句在某些场景下用的到,如终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两次或者多层的循环

这种情况下break达不到我们的目的。break只能从最内层循环退出到上一层的循环

goto语句真正适合的场景如下:

1
2
3
4
5
6
7
8
9
10
11
12
for(...) 
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
...
error:
if(disaster)//处理错误情况

用下面这个例子来给大家简单地演示一下goto的作用

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main()
{
printf("hello world\n");
goto again;
printf("你好\n");
again:
printf("hehe\n");
return 0;
}

结果如下

image-20210816095756281

可以看到,程序跳过了printf(“你好\n”);,直接到下一步打印hehe

代码的执行流程图如下:

image-20210816095951025

其实goto的作用方式非常容易理解,即:走到again

这时候程序会直接跳到again后面的代码,不管这个again是在goto的后面还是前面

需要注意的是,again在前面必须在特定的循环\条件代码中使用

如果你将上述的代码改成这样

1
2
3
4
5
6
7
8
9
int main()
{
again:
printf("hello world\n");
goto again;
printf("你好\n");
printf("hehe\n");
return 0;
}

那么代码就会一直打印hello world,进入死循环

那goto就不是没有必要了,是毫无意义

image-20210816101924038

想知道goto在前面的时候要怎么书写代码吗

且听下回分解

(因为这个代码是个关机小程序,我感觉重新写一篇博客会更好)

点个赞再走吧,求求了!