C中的pow功能

ham*_*amb 9 c gcc math.h pow

我编写了一个具有power.h函数的C代码,该代码来自math.h库.当我编译我的程序时,我收到一个错误,即"未定义引用'pow'函数",我使用gcc编译器(fedora 9)编译我的程序.

我将-lm标志插入gcc然后,错误被省略,但pow函数的输出为0.

#include<math.h>
main()
{
double a = 4, b = 2;
b = pow(b,a);
}
Run Code Online (Sandbox Code Playgroud)

谁能帮我?我的编译器有问题吗?

谢谢.

goF*_*ard 13

对于寻求这样一个答案的其他人:

这不起作用:

gcc my_program.c -o my_program
Run Code Online (Sandbox Code Playgroud)

它会产生这样的东西:

/tmp/cc8li91s.o: In function `main':
my_program.c:(.text+0x2d): undefined reference to `pow'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

这将有效:

gcc my_program.c -o my_program -lm
Run Code Online (Sandbox Code Playgroud)

  • 这已经在问题本身中说明了。(以及 Stack Overflow 上的许多其他问题和解答。) (2认同)

Mat*_*Mat 9

您的程序不输出任何内容.

您所指的0可能是退出代码,如果您没有显式返回,则为0 main.

尝试将其更改为符合标准的签名并返回b:

int main(void) {
  ...
  return b;
}
Run Code Online (Sandbox Code Playgroud)

请注意,返回值基本上限于8位信息,因此非常非常有限.

使用printf要显示的值.

#include <stdio.h>
...
  printf("%f\n", b);
...
Run Code Online (Sandbox Code Playgroud)

必须使用浮点转换说明(f,ge)打印double值.您不能使用d或其他人并期望一致的输出.(这实际上是未定义的行为.)

  • 好答案。我的猜测是OP使用了错误的printf说明符。 (2认同)
  • @cnicutar:你的水晶球非常强大。 (2认同)