gpt4 book ai didi

c++ - 如何将这个 While 循环写成 For 循环?

转载 作者:太空狗 更新时间:2023-10-29 20:26:55 25 4
gpt4 key购买 nike

我正在阅读本网站推荐的“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循环是由一个initstatement,condition和一个表达式组成的。在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");
}

最佳答案

错误,您可以将任何 while 循环编写为 for 循环,方法是将 while(...) 替换为 for( ;...;)...

for (;std::cin >> value;)   {

}

虽然您发布的代码没有任何内容表明存在 for 循环。通常,当您真正想要计算某些东西或迭代一个集合时,您会使用 for 循环。您的意图只是循环直到满足条件,因此几乎尖叫着 while,而不是 for

我想如果我必须用 for 循环“正确”地写这个,我可能会使用这样的东西:

int sum = 0;
for (int i = 0; std::cin >> i; sum += i); // empty loop body
std::cout << sum << std::endl;

不过,我更愿意使用语义上更正确的 while 循环。

关于c++ - 如何将这个 While 循环写成 For 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17841424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com