我正在尝试编写一个程序,要求将5^30的幂存储到int中,但当我尝试这样做时,它给出的输出是一个负数。用双倍或长的都很好
# include <stdio.h>
int PowerFive(){
int a, i, n=5, e=1;
for (i = 0; i<=30; i++)
{
a=e;
printf("%d, ", e);
e = e*n;
}
return 0;
}
int main()
{
PowerFive();
}
3条答案
按热度按时间6ss1mwsb1#
增加int的大小
编译器有时提供
int
大小的控件,但通常将其固定到目标系统为32、16、64、..比特。它必须至少有16个。存储5^30的值
530是931322574615478515625,一个70位的数字。
C没有指定足够宽的整数类型,尽管有些系统确实支持128位整数。
缺少128位整数,存储该整数值需要一种不同的方法。存在各种任意宽度的库。
速战速决就是使用字符串--效率不是很高,但可以完成工作。
输出
9gm1akwq2#
您不能;
int
有固定的大小。long
可能比int
大,但看起来您需要超过64位才能获得正确答案。在这种情况下,您最好的选择可能是使用__int128
。hk8txs483#
int
、long
、double
、...依赖于实施/平台。因此,在某些平台上,这可能不适用于
long
。关于‘It Works with
double
’的注解:一般来说,对于double
或float
,您可能认为它有效,但答案可能是错误的:四舍五入到接近正确答案的值。您必须实现自己的大整型代码,该代码使用3个(或更多)e1d7d1。