私のプログラムは、関数に渡される値の自然対数を出力します。奇妙なことは、私がダミー変数に値0.1を代入し、それを引数として渡したときに、関数が間違った答えを返すということです。実際の値0.1を直接渡すと正しい答えが得られます。変数と値として渡されるパラメータは、どちらも異なる答えを返します。
#include <stdio.h>
double pow(double val, int x) {
int i;
for(i = 1; i <= x; i++) {
val *= val;
}
return val;
}
double log(double val) {
int i;
int n = 20;
double ret_val;
for(i = 1; i < n; i++) {
ret_val += pow(-1,i+1) * pow(val-1,i);
}
return ret_val;
}
int main() {
double dummy;
dummy = 0.1;
printf("%f",log(dummy));
printf("%f",log(0.1));
return 0;
}
ここに何か不足していますか?どのように同じ値が異なる回答を返すことが可能ですか?
'double ret_val;':初期化されていない変数を使用しました。 – BLUEPIXY
また、組み込みの関数名( 'log'と' pow')を使用しないでください。 – BLUEPIXY