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