如何解决将数字提高到 x 的幂后得到否定答案
我有这段代码,它在将一个数字提升到第 n 个数字后返回答案。
int getPower(int base,int x){
int result=1;
while (x != 0) {
result *= base;
--x;
}
return result;
}
我尝试测试 base 为 97 且 x 为 5 的位置。我得到 -2594335
的结果。我尝试将结果的数据类型更改为 long,但仍然得到相同的负值。
解决方法
正如在对您的问题的评论中提到的那样,int
类型的对象可能不够大,无法存储此类值。因此,将类型 int
替换为类型 long long
。
例如
#include <stdio.h>
long long int getPower( int base,unsigned int x )
{
long long int result = 1;
while ( x-- ) result *= base;
return result;
}
int main( void )
{
unsigned int x = 5;
int base = 97;
printf( "%d in the power of %u is %lld\n",base,x,getPower( base,x ) );
}
程序输出为
97 in the power of 5 is 8587340257
代替这个声明
printf( "%d in the power of %u is %lld\n",x ) );
你可以写
long long int result = getPower( base,x );
printf( "%d in the power of %u is %lld\n",result );
另一种方法是使用浮点类型 long double
而不是整数类型 long long
作为计算值的类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。