在while循环的条件之后放置分号会发生什么?

我偶然遇到过这样的情况:

while (true) { while (age == 5); //What does this semi-colon indicate? //Code //Code //Code } 

while(true)表示这是一个无限循环,但我无法理解while条件完成后的分号是什么,是不是等于这个?:

 while (age == 5) { } //Code //Code 

换句话说,它是否意味着while循环是无用的,因为它永远不会进入块?

 while (age == 5); // empty statement 

相当于

 while (age == 5) { } // empty block 

更新:即使没有正文执行,也不意味着循环终止。 相反,它将简单地循环遍历条件( 可能具有或依赖于副作用 ),直到满足为止。 这是带goto的等效forms:

 loop: if (age == 5) goto loop; 

此构造有时用作等待标志的忙循环 ,以便在线程代码中进行更改。 (确切的用法和有效性因语言,算法和执行环境而异。)

我找到了使用; “空块” 空语句由于以下问题而使用可疑构造

 while (age == 5); { Console.WriteLine("I hate debugging"); } 

(之前我已经多次看到过这个bug,当时添加了新代码。)

快乐的编码。

while (age == 5); 陷入无限循环。 在c ; 是一个空终止符。 编译器假定上面的循环只有一个语句; 这导致循环无限迭代。

仅包含的声明

;

是一个空语句。 它与块(也称为复合语句)相同,内部没有任何内容

 { } 

他们都不执行任何操作。

如果我们放; 任何地方它意味着null语句(什么都不做的声明)。

我们写的时候

 while(true); 

它意味着while循环是一个什么都不做的语句。 它类似于

 while(true) i++; 

这里的语句不是null但在前面的case语句中为null