for循环中的多次初始化
multiple initializations in for loop
我正在尝试编写一个函数来查找数字的平均值,起初我将代码编写为
double CPPLib::average_of_numbers(std::vector<int> &numbers){
double result = -1;
if(numbers.size() != 0)
{
result = 0;
for(int i=0;i< int(numbers.size());i++)
{
result += numbers[i];
std::cout << result << std::endl;
}
std::cout << result << std::endl;
result = result/numbers.size();
std::cout << result << std::endl;
}
return result;
}
对于输入 {1,2,3,4,5} 上面的代码工作正常并打印
1个
3个
6个
10
15
15
3个
3个
.但是当我试图在“for”循环初始化中包含 result = 0 时,在代码
中显示的 loop.as 之后,我得到的结果为 -1
double CPPLib::average_of_numbers(std::vector<int> &numbers){
double result = -1;
if(numbers.size() != 0)
{
for(int i=0,result = 0;i< int(numbers.size());i++)
{
result += numbers[i];
std::cout << result << std::endl;
}
std::cout << result << std::endl;
result = result/numbers.size();
std::cout << result << std::endl;
}
return result;
}
结果显示为
1个
3个
6个
10
15
-1
-0.2
-0.2
你能告诉我这是为什么吗?
非常感谢。
在您的第二个示例中,您实际上声明了两个名为 result
的独立变量。第一个在函数的顶部。
double result = -1;
另一位在这里:
for(int i=0,result = 0;i< int(numbers.size());i++)
您已经声明了一个名为 result
(除了 i
)的临时 int,其生命周期和范围都在 for-loop.它覆盖了之前声明的外部 result
。当 for-loop 退出时,对 result
的引用返回到之前声明的原始变量。
最简单的解决方法是按照您在第一个示例中所做的操作进行操作。在循环外显式设置 result=0
。
我正在尝试编写一个函数来查找数字的平均值,起初我将代码编写为
double CPPLib::average_of_numbers(std::vector<int> &numbers){
double result = -1;
if(numbers.size() != 0)
{
result = 0;
for(int i=0;i< int(numbers.size());i++)
{
result += numbers[i];
std::cout << result << std::endl;
}
std::cout << result << std::endl;
result = result/numbers.size();
std::cout << result << std::endl;
}
return result;
}
对于输入 {1,2,3,4,5} 上面的代码工作正常并打印 1个 3个 6个 10 15 15 3个 3个 .但是当我试图在“for”循环初始化中包含 result = 0 时,在代码
中显示的 loop.as 之后,我得到的结果为 -1double CPPLib::average_of_numbers(std::vector<int> &numbers){
double result = -1;
if(numbers.size() != 0)
{
for(int i=0,result = 0;i< int(numbers.size());i++)
{
result += numbers[i];
std::cout << result << std::endl;
}
std::cout << result << std::endl;
result = result/numbers.size();
std::cout << result << std::endl;
}
return result;
}
结果显示为 1个 3个 6个 10 15 -1 -0.2 -0.2 你能告诉我这是为什么吗? 非常感谢。
在您的第二个示例中,您实际上声明了两个名为 result
的独立变量。第一个在函数的顶部。
double result = -1;
另一位在这里:
for(int i=0,result = 0;i< int(numbers.size());i++)
您已经声明了一个名为 result
(除了 i
)的临时 int,其生命周期和范围都在 for-loop.它覆盖了之前声明的外部 result
。当 for-loop 退出时,对 result
的引用返回到之前声明的原始变量。
最简单的解决方法是按照您在第一个示例中所做的操作进行操作。在循环外显式设置 result=0
。