我试图计算一个简单的积分近似值,将其分解为阶梯函数,简单的东西。当我只是尝试进行划分时,问题就出现了。这是我的代码:
double integrand(int a, double div, int n) {
int i;
double sum, val;
val = 1.0/div;
for(i = 0; i < div; i++) {
sum = sum + (pow(i*val, n)/(i*val + a)) * val;
}
return sum;
}
这里div实际上是一个整数,我试着将它作为一个整数引入到integrand函数中并将其类型化为函数内的double,结果相同。当我调试代码时,div可以说是100,但是val会返回像-7.2008557565654656e + 304这样荒谬的东西。据我所知,其余的代码是正确的,但我无法弄明白,发生了什么?!
答案 0 :(得分:2)
您从未初始化sum
:
double sum = 0, val;
现在,您在计算中使用它并使用未初始化的值,从而获得一些垃圾结果。
答案 1 :(得分:1)
首先初始化sum
然后使用它。否则,它将调用未定义的行为。