我的程序打印傳遞給函數的值的自然對數。我觀察到的奇怪之處在於,當我將值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