我正在阅读一本旧的C ++入门书,我已经躺在床下几年了。在阅读特定章节时,我碰巧遇到了“继续”声明。我阅读了书中关于它的信息;然而,这本书有点细节。我很好奇,想要测试一下continue语句,看看我是否可以自己想出更多关于它的信息(虽然它现在可能已经过时了,我仍然很好奇它是如何工作的。)
我读到 continue语句“导致程序跳过当前迭代中的其余循环,就好像已到达语句块的结尾一样,导致它跳到下一次迭代的开始 - (cplusplus.com)“
话虽如此,我构建了这个简单的程序来测试它:
#include <iostream>
int main(void) {
unsigned short int amount = 100;
unsigned short int container[5] = {amount , 0, 0, 0, 0,};
while(!(container[0]==90))
{
if(container[0]==97) continue;
std::cout << --container[0] << ", ";
}
return 0;
}
该程序的输出是:
99, 98, 97,
现在,我认为结果与此类似:
99, 98 , 96 , 95, 94, 93, 92, 91, 90
我认为结果将是这样的,因为 continue语句将跳过,根据定义,97并重新开始迭代,从而输出上述结果中的一系列数字。
本书中的示例有效,但是使用 for循环执行。我很好奇为什么它不适用于 while循环,因为它们都是迭代。我只需要解释为什么会这样。提前感谢大家。
答案 0 :(得分:8)
如你所说,continue
会跳过循环体的其余部分。在这种情况下,它包含--container[0]
,因此其值永远不会再次更改。
如果您要使用for
循环,在其迭代器子句中更新计数器,那么它将按预期运行:将跳过正文的其余部分,但不会跳过迭代器。
for (container[0] = 99; container[0] != 90; --container[0]) {
if (container[0] == 97) continue; // skip "cout", jump to "--"
std::cout << container[0] << ", ";
}
// Output: 99, 98, 96, 95, 94, 93, 92, 91,