【发布时间】:2018-10-16 15:35:03
【问题描述】:
好吧,这次我遇到了一个并不总是出现的非常奇怪的错误。这是实际包含问题的函数。它所做的只是对向量的元素求和。它在大多数情况下都有效,但在少数情况下,它往往会变得非常有问题。
int sumvec(vect v) {
int i = 0;
int sum = 0;
int l = v.length();
std::cout << "Sum of vector " << v.tostring(3) << std::endl;
for (; i < l; i++) {
sum += v[i];
std::cout << v[i] << " " << sum << " ";
};
std::cout << std::endl;
return sum;
}
这里vect 是使用typedef alglib::real_1d_array vect; 定义的。好的,那我会得到什么?呵呵..
Sum of vector [1.000,1.000,0.000,1.000,1.000,1.000]
1 0 1 0 0 0 1 0 1 0 1 1
什么?!!!!!
【问题讨论】:
-
你的元素实际上是 1 还是一个略小于 1 的数字?如果它们不是 1,那么将它们作为整数相加将产生 0。尝试打印
(int)v[i]。我们需要一个minimal reproducible example -
@AlanBirtles 啊哈。我懂了。我已将
int更改为double。