potencia - sqrt en c
El uso de la funciĆ³n pow() arroja un error de referencia indefinido en C (4)
referencia indefinida a ''pow''
porque el poder para cualquier número debe tener un valor entero como potencia
pow(x,y)
where, x must be real and y must be a whole number
¿Por qué el siguiente bit de código funciona en C?
int res = pow(2, 3);
printf("%d/n", res);
mientras que este otro no?
int a = 2;
int b = 3;
int res = pow(a, b);
printf("%d/n", res);
Incluso si lo intento
double a = 2;
double b = 3;
double res = pow(a, b);
printf("%f/n", res);
Obtengo un
referencia indefinida a ''pow''
¿Qué estoy haciendo mal?
Cuando funciona, es porque el compilador hizo el cálculo (y se incluye en el binario como si lo hubiera escrito)
printf("8/n");
Cuando no funciona, se debe a que la función pow
está incluida en la biblioteca matemática y la biblioteca matemática no está vinculada con el binario de manera predeterminada.
Para vincular la biblioteca matemática, si su compilador es gcc, use
gcc ... -lm ...
Con otros compiladores, debería ser el mismo :)
pero lee la documentación
Use así
#include <math.h>
#include <stdio.h>
int main(void)
{
for(int i = 1; i < 5; i++)
printf("pow(3.2, %d) = %lf/n", i, pow(3.2, i));
return 0;
}
Salida:
pow (3.2, 1) = 3.200000
undefined reference to ''pow''
suena como un error de enlazador. No está enlazando en la biblioteca matemática, incluso si introduce la función pow
incluyendo <math.h>
.
Con gcc, use el parámetro de línea de comando -lm
para vincular en math lib.