标记语句:
标记语句可以给语句加上一个标签作为前缀。标记语句可以出现在块中,但是不允许它们作为嵌入语句。
labeled-statement:(标记语句:)
identifier : statement(标识符 : 语句)
标记语句声明了一个标签,它由一个标识符来命名。标签的范围为在其中声明了该标签的整个块,包括任何嵌套块。两个同名的标签若具有重叠的范围,则会产生一个编译时错误。
一个标签可以在该标签的范围内被 goto
语句(第 8.9.3 节)引用。这意味着 goto
语句可以在它所在的块内转移控制,也可以将控制转到该块外部,但是永远不能将控制转入该块所含的嵌套块的内部。
标签具有自己的声明空间,并不影响其他标识符。示例
int F(int x) { if (x >= 0) goto x; x = -x; x: return x; }
是有效的,尽管它将 x
同时用作参数和标签的名称。
执行一个标记语句就是执行该标签后的那个语句。
除由正常控制流程提供的可到达性外,如果一个标签由一个可到达的 goto
语句引用,则该标记语句是可到达的。(例外:如果 goto
语句在一个包含了 finally
块的 try
中,标记语句本身在 try
之外,而且 finally
块的结束点不可到达,则从该 goto
语句不可到达上述的标记语句。)
备注:转自https://msdn.microsoft.com/zh-cn/library/aa664740(v=vs.71).aspx