为什么即使使用 %f pow 也输出 0?
Why does pow output 0 even when using %f?
我是 c 的新手,所以我在学习教程时尝试使用 pow 函数。在教程中(我完全按照他们编写的代码进行操作),他们的输出是正确的,但我得到的只是 0.000000。有谁知道为什么会这样?
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("%f", pow(4, 3));
return 0;
}
输出
0.000000
插入 #include <math.h>
,在编译器中打开警告,注意警告消息,并将警告升级为错误。
如果没有 <math.h>
,pow
不会被声明,并且 pow(4, 3)
将参数作为 int
传递。 pow
需要其参数作为 double
传递,当它们作为 int
传递时的行为未由 C 标准定义。此外,pow
的 return 类型将被假定为 int
,但实际的 return 类型为 double
,并且函数调用的行为为这种不匹配也没有定义。并为 %f
的 printf
转换传递 int
值也具有 C 标准未定义的行为。
如果你在 linux 工作并且你想插入 #include <math.h>
不要忘记用 -lm
编译到 link 数学库。
顺便说一句,如果您想使用浮点数,请尝试使用 powf
。
语法:float powf(float___x,float___y);
.
我是 c 的新手,所以我在学习教程时尝试使用 pow 函数。在教程中(我完全按照他们编写的代码进行操作),他们的输出是正确的,但我得到的只是 0.000000。有谁知道为什么会这样?
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("%f", pow(4, 3));
return 0;
}
输出
0.000000
插入 #include <math.h>
,在编译器中打开警告,注意警告消息,并将警告升级为错误。
如果没有 <math.h>
,pow
不会被声明,并且 pow(4, 3)
将参数作为 int
传递。 pow
需要其参数作为 double
传递,当它们作为 int
传递时的行为未由 C 标准定义。此外,pow
的 return 类型将被假定为 int
,但实际的 return 类型为 double
,并且函数调用的行为为这种不匹配也没有定义。并为 %f
的 printf
转换传递 int
值也具有 C 标准未定义的行为。
如果你在 linux 工作并且你想插入 #include <math.h>
不要忘记用 -lm
编译到 link 数学库。
顺便说一句,如果您想使用浮点数,请尝试使用 powf
。
语法:float powf(float___x,float___y);
.