【发布时间】:2019-01-17 18:15:15
【问题描述】:
我创建了一个新的#define g(x),当我打印 x 并且 num 是 number int greater(>) of 2 时,它无法按预期工作
我尝试打印我的#define g(x),但没有成功
代码如下:
#define g(x,num) 1/3*(2 * x + (num / x))
#define f(x,num) x*x - num
#define var 1E-12 //(1E-12 = 10^-12)
double x;
int i;
double num;
double srt(double num) {
x = num;
for(i; abs(f(x,num)) > var ;i++) {
x = g(x,num);
printf ("x: %f\n", x);
}
printf ("counter %d\n", i);
return x;
}
int main(int argc, char** argv) {
printf("give number\n");
scanf("%lf", &num);
printf ("your number is num: %lf\n", num);
printf("srt : %lf", srt(num));
return 0;
}
【问题讨论】:
-
你能展示一个完整的程序吗?我们需要能够看到
sqrt是如何被调用的 -
1/3将评估为0。 -
感谢 Osiris 我得出的结论是 1/3 必须是 1.0/3.0 非常感谢
-
请有人回答。 @奥西里斯?
-
在这种情况下不要使用宏。使
f和g成为真正的功能,也许是static inline一个。然后阅读how to debug small programs。如果用作g(3.0+z),则您的代码是“错误的”