C++ 为什么可以';你不能用标签结束while循环吗?

C++ 为什么可以';你不能用标签结束while循环吗?,c++,goto,C++,Goto,而不是写作 while() { lbl: } 你必须写作 while() { lbl:; } 为什么??这对我来说毫无意义。如果使用C编写代码,即使循环中存在实际代码,也是如此,因为C11标准定义了这一点。通过阅读§6.8.1进行检查。顺便说一句,C的其他标准也有类似的规则 如果C++中的代码为“强”,则C++ 11标准定义了< /强>。通过阅读§6.1进行检查。顺便说一下,C++的其他标准也有类似的规则。 直观地说,标签与语句有关,右大括号不是语句(而是块终止符)。分号(单独使用时)是

而不是写作

while()
{
 lbl:
}
你必须写作

while()
{
 lbl:;
}

为什么??这对我来说毫无意义。如果使用C编写代码,即使循环中存在实际代码,也是如此,因为C11标准定义了这一点。通过阅读§6.8.1进行检查。顺便说一句,C的其他标准也有类似的规则

如果C++中的代码为“强”,则C++ 11标准定义了< /强>。通过阅读§6.1进行检查。顺便说一下,C++的其他标准也有类似的规则。 直观地说,标签与语句有关,右大括号不是语句(而是块终止符)。分号(单独使用时)是空(或null)语句的结尾

如果您对该规则不满意,可以随意使用一些不同的编程语言,或者定义自己的编程语言(并实现它,可能是通过C实现的)。也许你可以研究一下(读一下)和它的原语(一种不同的,更强大的控制原语)

你也可以游说C++(或C)标准委员会来改变规则。在实践中,这需要世界声誉和多年的全职工作(否则,他们不会认真考虑你的建议)。在编写更改C++标准的建议之前,一定要非常好地学习它,并提供一个示例性的想法。 <>许多C++实现是(例如OR)。你可以研究它们并改进它们(至少在你的课程中是这样;但是一定要遵守它们)。但是,有大量的代码(数百万行源代码),因此您需要几年时间才能理解它们


请记住,编程语言是一种规范(不是软件),它不仅定义了,而且还定义了。

仅供参考,这与
while
无关。例如:
{label:;}
。本质上是:因为标签是语句的可选部分,并且语句需要是完整的语句。标签后跟
本身并不是一个完整的语句<代码>是语句结尾的指示符。该规则有助于编译器明智地解析,因为它可以明确地识别每个语句的开头和结尾(例如,通过出现
,或者在块语句的情况下,
{
和匹配的
}
)。