多个goto标签如何工作

时间:2015-05-21 22:08:50

标签: c function goto callstack

快速提问:

让我们说我正在使用C代码,我调用goto转到特定标签,但我有多个标签:

goto A;

   A:
   //something
   B:
   //something else
   C:
   //something else

当我转到A时,我还会执行B和C还是只退出该功能?

1 个答案:

答案 0 :(得分:3)

标签只是代码中的锚点。它不是代码,标签本身不会被执行。 goto语句“跳转”到标有(带前缀)的语句,并带有goto语句中的标签。代码继续从那里运行,执行遵循所有规则,如前所述(关于if / else分支,循环,返回,所有东西)。

代码不会“退出”某个功能;当执行到达return语句时,它从函数“返回”。如果函数体中没有return语句,则当执行到达函数的主体结束大括号(})时返回。