【发布时间】:2019-09-26 14:57:19
【问题描述】:
今天在我大学的讲座中,我们得到了这个:
输入:1、2、3、0、4
还有两个不同的代码
(1)
int x = 0;
int sum = 0;
int count = 0;
while (cin >> x && x != 0) {
sum += x;
count++;
}
cout << static_cast<double>(sum) / count;
(2)
int x = 1;
int sum = 0;
int count = 0;
while (x != 0 && cin >> x ) {
sum += x;
count++;
}
cout << static_cast<double>(sum) / count;
我知道第一个代码以输出 2 结尾,但显然第二个输出以 1.5 (6/4) 的输出结尾。我的困惑是为什么在输入零后循环变为假时计数为 4 - 它是条件中 cin 的位置,初始化的 x?我很困惑。谢谢!
【问题讨论】:
-
int sum x = 0;无法编译。 -
int x = 1;vsint x=0;只是为了避免第二个代码跳过循环。第一个代码可以有int x = 1;并且没有区别。他们教过你如何使用调试器吗? -
相关(可能重复):How does C++ handle &&? (Short-circuit evaluation)。 TL/DR:如果读取数为
0,则第一个循环不计算该数字,而第二个循环则计算。
标签: c++ loops while-loop do-while