编程语言
首页 > 编程语言> > c#-迭代语句后的语句终止符(;)运算符:结束迭代语句本身,还是看不见的空语句?

c#-迭代语句后的语句终止符(;)运算符:结束迭代语句本身,还是看不见的空语句?

作者:互联网

this answer年期间,我们心爱的Jon Skeet考虑了以下情况:do {} while()需要一个语句终止符,因为while()需要一个声明体,并举例说明:

while (true); (empty statement) or while (true) {} (block statement)

…将是有效的.

第二个例子很简单. while循环执行复合(块)语句({}),该语句为空.

但是,第一个示例以及Skeet的描述向我提出了一个有趣的问题:

是否;在while(true); (或其他任何迭代语句)终止while(/ statement)本身(在某种意义上),还是终止)和终止符之间的实际不可见的空语句?

解决方法:

从语法的角度来看,它终止了该语句.不过,这是一种很奇怪的思考方式. while循环必须有一个主体,所以如果您只写

while(true)

解析器不知道“语句”在哪里结束,因为它缺少令牌.您可以类似地用另一个语句“终止”该语句.

while (true) i++;

与;一样有效.您真正应该考虑的方式是写作

while (true) ;

实际上是一个以空语句为主体的while循环,而不是试图思考什么“终止了该语句”

标签:iteration,semantics,c
来源: https://codeday.me/bug/20191110/2015584.html