我始终将;
放在while
的末尾,或者不将其置于do while
循环的末尾。那是什么原因?为什么
int numItemsToProcess = 3;
while(numItemsToProcess > 0)
{
// process an item
numItemsToProcess--;
}
最后不需要;
,但
do
{
numItemsToProcess --;
} while (numItemsToProcess > 0);
呢?
也许原因并不太重要。但是当你知道你可以记住把;
放在哪里的原因时。
答案 0 :(得分:11)
除了block语句之外,在所有语句之后加上分号。这就是您将while
置于do while
之后,而不是while {...}
中阻止之后的原因。
您还可以使用它来终止几乎所有声明。我现在能想到的唯一例外是函数体,以及C ++中的namespace
体。
答案 1 :(得分:7)
它们是两种不同的循环结构。你只需要记住。
将它们视为单行:
do one_thing while( condition );
do { stuff } while( condition );
和
while( condition ) one_thing;
while( condition ) { stuff }
这些都是最后需要分号的表达式,除了最后一个,其中大括号在逻辑上表示表达式的结尾(考虑if
语句)。
答案 2 :(得分:0)
因为它是一个标准
请参阅The ISO C++ standard第128页
此外
这是因为while语句在do-while循环中是有效的。
int x = 10;
int y = 10;
do
while(x > 0)
x--;
while(x = y--);
因为你要结束陈述
语句以块(由花括号分隔)结束,
或者用分号。 "这样做"是一个单一的陈述,不能以一个块结束(因为它以"而#34;结束),
所以它需要一个分号,就像任何其他声明一样。
答案 3 :(得分:0)
背后的原因如下
条件: - 条件具有
之类的签名while (expression)
statement
while循环根据提供给它的表达式执行。如果表达式为true,则while {}中写入的语句将执行else。您也可以在;
之后标记while (expression);
,但它只会立即完成while
语法,因为;
表示结束语句。通常whil
循环检查表达式并执行其中的语句列表。
执行条件: - 同时具有
之类的签名do
statement
while (expression);
do-while
是一个有趣的循环。无论do
中的expression
是真还是假,while
之后的语句都会执行至少一个语句。 do while
的流表示do
之后的语句将执行一次,然后检查while
条件。如果while
条件为真,则将再次执行do
之后的语句。在;
结尾处do ... while (expression);
的原因是因为此处while
被视为声明,因为它的正文位于其上方。在c ++中,每个语句必须以; 结尾,因此do while
以;
结尾。