Digamos que tengo el siguiente fragmento de código:función pow de C se niega a trabajar con exponente variable de
int i; double value;
for(i = 0; i < CONSTANT; i++) {
value = (double)pow(2, i);
}
Tratando de compilar este código, se obtiene una "referencia indefinida a '' prisionero de guerra" de error.
La inclusión o exclusión de math.h
no hace ninguna diferencia, ya que al final se incluye de todos modos.
Aumentando 2.0
a un poder codificado funciona bien, pero todo falla si sustituyo el exponente por una expresión que contiene i
.
¿Qué estoy haciendo mal? Gracias.
¿Qué compilador estás usando? ¿Hay alguna otra declaración posible de 'pow()'? ¿Podría citar el error exactamente? –
Estoy usando GCC y no hay otra declaración de 'pow'. La pregunta es definitivamente respondida; casi todas las respuestas me ayudaron. Ojalá pudiera aceptar más de uno. :) Gracias a todos. –
Mientras que otros han comentado por qué 'pow' no funcionaba, el hecho de que estés usando' pow' es un gran problema con tu código. ** C tiene un operador para exponentes base 2 ** y se llama '<<'. Elimine este uso inútil de 'pow' y reemplácelo con' 1 << i', y olvídese de 'double'. –