在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
。