Ho la seguente funzione di potere che opera su numeri interi e funziona benissimo:unsigned long long int pow
int ipow(int base, int exp)
{
int result = 1;
while(exp)
{
if (exp & 1)
{
result *= base;
}
exp >>= 1;
base *= base;
}
return result;
}
ora mi piacerebbe avere una versione che consente di exp> 32. Quindi io uso unsigned long lunghe interi:
unsigned long long int ipow(int base, int exp)
{
unsigned long long int result = 1ULL;
while(exp)
{
if (exp & 1)
{
result *= (unsigned long long int)base;
}
exp >>= 1;
base *= base;
}
return result;
}
Ma questa seconda versione non sembra funzionare:
unsigned long long int x;
x = ipow(2, 35);
printf("%llu\n", x);
questa uscita volontà 0.
Qual è il problema con la mia implementazione long long int unsigned?
Infatti, grazie mille, ora funziona! – DanielFetchinson