为什么即使在使用 %f 时 pow 也会输出 0?

问题描述

我对 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 的返回类型将假定为 int,但实际返回类型为 double,并且也未定义具有此不匹配的函数调用的行为。并且为 intprintf 转换传递 %f 值也具有 C 标准未定义的行为。

,

如果您在 linux 中工作并且想要插入 #include <math.h>,请不要忘记使用 -lm 进行编译以链接数学库。

顺便说一句,如果您想使用浮点数,请尝试使用 powf

语法:float powf(float___x,float___y);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...