【发布时间】:2013-07-24 08:47:50
【问题描述】:
我正在阅读本网站推荐的“C++ Primer 5th Edition”。我正在逐步执行 For 和 While 循环,并得出结论它们实际上是相同的。至少这是我收集到的。我认为当有人说“For 循环适用于您知道要循环多少次时,而 while 循环适用于您想要循环直到满足条件时”,我认为他们解释得最好。但本质上,编译器并没有区分两者,它们可以互换使用。
这本书展示了这段代码(它甚至没有按照解释的方式工作):
<iostream>
int main()
{
int sum = 0, value = 0;
// read until end-of-file, calculating a running total of all values read
while (std::cin >> value) {
sum += value; // equivalent to sum = sum + value
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
}
附加的练习说“编写你自己的程序版本,打印总和 从 cin 读取的一组整数。”我假设他们希望我使用 For 循环。所以我尝试这样做。不过我很难。
书上说“For循环由初始化语句、条件和表达式组成。在while循环中,“std::cin >> value”是我的条件,没有表达式。所以我该怎么办如果我只有一个初始化语句和一个条件,那么使用 for 循环?
#include <iostream>
int main()
{
int sum = 0;
for (int value = 0; std::cin >> value; "EXPRESSION GOES HERE")
sum += value;
std::cout << "The sum is: " << sum << std::endl;
return system("pause");
}
【问题讨论】:
-
请记住,
for表达式的 any 部分可以为空。 -
旁注:当我们知道迭代次数时,我们使用for循环,而我们更喜欢在特定条件下中断。
-
@Grijesh:不,for 循环是您在每个循环中都需要的“初始化”、“条件”和“更新”步骤。例如。一个链表可以用
for(T *p = head; p; p = p->next) ...进行迭代——我们不知道有多少,只是当它达到零时就完成了。将一个数字除以得到它的位数可以是for(int x = n; x; x /= 10) ...等。 -
如果您想知道为什么提供的示例不起作用(正确):
return 0;在 while 循环内。有明显错误的例子?不是很好。
标签: c++ for-loop while-loop