¿Por qué no funciona mi operador de energía (^)?
#include <stdio.h>
void main(void)
{
int a;
int result;
int sum = 0;
printf("Enter a number: ");
scanf("%d", &a);
for( int i = 1; i <= 4; i++ )
{
result = a ^ i;
sum += result;
}
printf("%d\n", sum);
}
¿ Por qué ^
no trabaja como operador de energía?
Bueno, en primer lugar, el ^
operador en C/C++ es el XOR bit a bit. No tiene nada que ver con poderes.
Ahora, con respecto a su problema con el uso de la pow()
función, algunas búsquedas en Google muestran que convertir uno de los argumentos en doble ayuda:
result = (int) pow((double) a,i);
Tenga en cuenta que también envío el resultado a int
ya que todas pow()
las sobrecargas devuelven el doble, no int
. No tengo un compilador de MS disponible, así que no pude verificar el código anterior.
Desde C99, también hay funciones llamadas y respectivamentefloat
long double
powf
powl
, si eso es de alguna ayuda.
En C ^
está el XOR bit a bit:
0101 ^ 1100 = 1001 // in binary
No hay ningún operador para la potencia, necesitarás usar pow
la función de math.h (o alguna otra función similar):
result = pow( a, i );
pow() no funciona con int
, de ahí el error "error C2668:'pow': llamada ambigua a función sobrecargada"
http://www.cplusplus.com/reference/clibrary/cmath/pow/
Escribe tu propia función de potencia para int
s:
int power(int base, int exp)
{
int result = 1;
while(exp) { result *= base; exp--; }
return result;
}
En primer lugar ^
, es un operador Bitwise XOR, no un operador de energía.
Puedes usar otras cosas para encontrar la potencia de cualquier número. Puedes usar el bucle for para encontrar la potencia de cualquier número.
Aquí hay un programa para encontrar x^y, es decir, x y
double i, x, y, pow;
x = 2;
y = 5;
pow = 1;
for(i=1; i<=y; i++)
{
pow = pow * x;
}
printf("2^5 = %lf", pow);
También puedes simplemente usar la función pow() para encontrar la potencia de cualquier número.
double power, x, y;
x = 2;
y = 5;
power = pow(x, y); /* include math.h header file */
printf("2^5 = %lf", power);