C语言中goto的使用及goto中的一个BUG:
① 当循环有多层时,用goto跳出指定一层。
② 异常处理。
goto语句中的一个BUG:
请看下图,是个死循环
![](https://i-blog.csdnimg.cn/blog_migrate/71439f6edda80887395f9b78f9cb0a7c.png)
编译器扫描代码时是一行一行的,当扫描有没有返回值时,是扫描有没有跟return匹配的字符,用了goto语句巧妙的跳过了return语句,但是在.cpp文件中会发现是个死循环。
原因所在:
![](https://i-blog.csdnimg.cn/blog_migrate/cc7d592cdaf149d1ae75b2d92d0490e8.png)
是因为编译器会删除无用的代码,同时下面代码往上移动到它的位置,这里不知何故移动了2次,使下面代码移动到如上图位置,从而形成死循环