C++ 为什么{}while(条件);在它的结尾需要分号,但while(condition){}不';T

C++ 为什么{}while(条件);在它的结尾需要分号,但while(condition){}不';T,c++,c,while-loop,do-while,C++,C,While Loop,Do While,我总是在放置时遇到问题在的末尾,而在的末尾,或者不将其放置在的末尾,而执行循环。那么原因是什么呢?为什么 int numItemsToProcess = 3; while(numItemsToProcess > 0) { // process an item numItemsToProcess--; } 不需要在末尾,但是 do { numItemsToProcess --; } while (numItemsToProcess &g

我总是在放置
时遇到问题
的末尾,而
的末尾,或者不将其放置在
的末尾,而执行
循环。那么原因是什么呢?为什么

int numItemsToProcess = 3;  
while(numItemsToProcess > 0)  
{  
    // process an item  
    numItemsToProcess--;  
} 
不需要
在末尾,但是

do  
{  
    numItemsToProcess --;
} while (numItemsToProcess > 0);  
是吗?
也许原因不太重要。但是当你知道原因后,你就可以记住把
放在哪里

除了block语句之外,所有语句后面都加上分号。这就是为什么要将它放在
do while
中的
while
之后,而不是
while{…}
中的块之后


您还可以使用它来终止几乎所有的声明。目前我唯一能想到的例外是函数体,以及C++中的代码>命名空间< /Cord>体。

< P>它们是两种不同的循环构造。你只需要记住

将它们视为一行:

do one_thing while( condition );

do { stuff } while( condition );


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

因为这是一个标准。
请参阅第128页

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

int x = 10;
int y = 10;

do 
 while(x > 0)
  x--;
 while(x = y--);
因为你要结束声明。
语句以块(用大括号分隔)结尾,
或者用分号。“Dothishwhilethis”是一条语句,不能以块结尾(因为它以“while”结尾),

因此,它需要一个分号,就像任何其他语句一样。

原因如下

  • While条件:-While条件的签名如下

    while (expression) 
       statement
    
    do
        statement
    while (expression);
    
  • While循环根据提供给它的表达式执行。如果表达式为true,则在{}时写入的语句将不执行。您还可以标记
    时(表达式)
    但它只会立即完成
    语法,如
    表示语句结束。通常,
    whil
    e循环检查表达式并执行其中的语句列表

  • Do While条件:-Do While的签名如下

    while (expression) 
       statement
    
    do
        statement
    while (expression);
    

  • do-while
    是一个有趣的循环。它的特点是,无论
    中的
    表达式
    是真还是假,紧跟在
    do
    之后的语句都将执行至少一条语句。
    do-while
    的流程表示
    do
    后面的语句将执行一次,然后检查
    while
    条件。如果
    条件为true,则将再次执行
    do
    之后的语句。存在
    的原因
    do的末尾。。。while(表达)
    是因为这里
    被视为语句,因为它的主体在它上面。在C++中,每个语句必须以<强>结尾;so
    do,而
    结尾 > /P>因为C或C++的语法是如此定义的。当需要放置<代码>时,有一种情况是:代码>在
    }
    -它是类/结构/联合声明。另一方面,您必须放置
    在每个statement@BasileStarynkevitch:那不是答案。约阿希姆·皮勒伯格发布了答案。你的声音只会让你失去好奇心。“因为说明书上说的是herp derp”回答很糟糕。很明显,每个规则都有一个原因。@ BaselestalyKyvigur~~(但我想它不是随机选择的):EdS。遗憾的是,C和C++标准远没有理性。标准采用某种语法的原因不一定有逻辑上的解释。或者可能曾经有过一个,但是你必须进行编程语言考古,找到BCPL语言或类似语言的基本原理哦,谢谢=)老实说,我从来没有用过这个结构。我最好更新一下。是的。“东西”只需要是一个陈述。它不一定是复合语句(也称为“块”)。其他答案解释了标准背后的逻辑。也许你也可以提供它的答案,那不是“ISO C++标准”,那是C++ 11标准的最终委员会草案。该草案与最终的C++11标准文档之间存在许多差异。我认为,与最终文件最接近的公开草案是。我认为它的“
    被视为声明”是不正确的。整个
    do。。。while()
    是一个语句。