¿Por qué no funciona mi operador de energía (^)?

Resuelto Abid Ali asked hace 13 años • 11 respuestas
#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?

Abid Ali avatar Jan 30 '11 21:01 Abid Ali
Aceptado

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 intya 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 respectivamentefloatlong doublepowfpowl , si eso es de alguna ayuda.

Sergei Tachenov avatar Jan 30 '2011 14:01 Sergei Tachenov

En C ^está el XOR bit a bit:

0101 ^ 1100 = 1001 // in binary

No hay ningún operador para la potencia, necesitarás usar powla función de math.h (o alguna otra función similar):

result = pow( a, i );
peoro avatar Jan 30 '2011 14:01 peoro

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 ints:

int power(int base, int exp)
{
    int result = 1;
    while(exp) { result *= base; exp--; }
    return result;
}
Max avatar Jan 30 '2011 14:01 Max

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);
Pankaj Prakash avatar Jul 29 '2015 15:07 Pankaj Prakash