【发布时间】:2021-09-15 03:07:45
【问题描述】:
为什么以下代码在 C 中可以工作:
int res = pow(2, 3);
printf("%d\n", res);
而另一个没有?
int a = 2;
int b = 3;
int res = pow(a, b);
printf("%d\n", res);
即使我尝试
double a = 2;
double b = 3;
double res = pow(a, b);
printf("%f\n", res);
我得到一个
对 `pow' 的未定义引用
我做错了什么?
【问题讨论】:
-
一个完整的代码 sn-p 会很有帮助...
-
你是否包含了 math.h?
-
我包括 math.h,是的。第一个代码 sn-p 工作并输出预期的内容。另外两个给出“对‘pow’的未定义引用”。
-
您是否通过向 gcc/g++ 提供 -lm 开关来链接数学库?
-
在你的第三个代码 sn-p 中,双精度值后面应该有一个
.0。所以,double a = 2.0;,而不是double a = 2;。