gpt4 book ai didi

c - unsigned long long int pow

转载 作者:太空狗 更新时间:2023-10-29 14:59:16 25 4
gpt4 key购买 nike

我有以下对整数进行运算的幂函数,它工作正常:

int ipow( int base, int exp )
{
int result = 1;
while( exp )
{
if ( exp & 1 )
{
result *= base;
}
exp >>= 1;
base *= base;
}
return result;
}

现在我想要一个允许 exp > 32 的版本。所以我使用 unsigned long long ints:

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;
}

但是这第二个版本似乎不起作用:

unsigned long long int x;
x = ipow( 2, 35 );
printf( "%llu\n", x );

这将输出 0。

我的 unsigned long long int 实现有什么问题?

最佳答案

您的 base 变量太小。将它更改为 unsigned long long int,就像其他的一样,因为它包含大于 2^32 的数字。

关于c - unsigned long long int pow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15224911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com