为什么{} while(condition); 在它结束时需要分号但是(条件){}不是吗?

我总是有放置的问题; 在结束while或不将它放在do while循环的末尾。 那是什么原因? 为什么

 int numItemsToProcess = 3; while(numItemsToProcess > 0) { // process an item numItemsToProcess--; } 

不需要; 最后但是

 do { numItemsToProcess --; } while (numItemsToProcess > 0); 

呢? 也许原因并不太重要。 但是当你知道你记得放在哪里的原因时;

除了块语句之外,在所有语句后面加分号。 这就是你在while之后放置它的原因,而不是在while {...}的块之后。

您还可以使用它来终止几乎所有声明。 我现在能想到的唯一例外是函数体和C ++中的namespace体。

它们是两种不同的循环结构。 你只需要记住。

将它们视为单行:

 do one_thing while( condition ); do { stuff } while( condition ); 

 while( condition ) one_thing; while( condition ) { stuff } 

这些都是最后需要分号的表达式,除了最后一个,其中大括号逻辑上表示表达式的结尾(想想if语句)。

因为这是一个标准。
请参阅ISO C ++标准页码128

这是因为while语句在do-while循环中是有效的。

 int x = 10; int y = 10; do while(x > 0) x--; while(x = y--); 

因为你要结束陈述。
语句以块(由花括号分隔)结束,
或者用分号。 “执行此操作时”这是一个单独的语句,并且不能以块结尾(因为它以“while”结尾),
所以它需要一个分号,就像任何其他语句一样。

这背后的原因如下

  1. 条件 : – 条件有签名之类的

     while (expression) statement 

while循环根据提供给它的表达式执行。 如果表达式为true,则while {}中写入的语句将执行else。 你也可以标记; 之后while (expression); 但它只会立即完成while语法,因为; 表示结束语。 通常,循环检查表达式并执行里面的语句列表。

  1. 做条件 : – 做同时签名

     do statement while (expression); 

do-while是一个有趣的循环。 无论while expression是真还是假,下面的语句都会执行至少一个特性。 do while的流程表示后面的语句将执行一次然后检查while条件。 如果while条件为真,则将再次执行do之后的语句。 之所以有;do ... while (expression);结束do ... while (expression); 是因为在这里被视为一种陈述,因为它的身体在它之上。 在c ++中,每个语句必须以; do while结束;