C语言中的goto,及BUG

C语言中goto的使用及goto中的一个BUG:

①    当循环有多层时,用goto跳出指定一层。
②    异常处理。

goto语句中的一个BUG:

请看下图,是个死循环
C语言中的goto,及BUG
    编译器扫描代码时是一行一行的,当扫描有没有返回值时,是扫描有没有跟return匹配的字符,用了goto语句巧妙的跳过了return语句,但是在.cpp文件中会发现是个死循环。


原因所在:
C语言中的goto,及BUG
    是因为编译器会删除无用的代码,同时下面代码往上移动到它的位置,这里不知何故移动了2次,使下面代码移动到如上图位置,从而形成死循环