gpt4 book ai didi

具有数据类型问题的 C++ 阶乘函数

转载 作者:行者123 更新时间:2023-11-28 00:48:36 25 4
gpt4 key购买 nike

我做了一个函数来计算从 0 到 16 的阶乘数(没有负数并且相当小)

但它不会超过 n15知道我应该使用什么数据类型以及在哪里使用吗?

long factorial(long num1)
{
long f;

if (num1 >= 0 && num1 <= 16)
{
for (long i = 0; i <=num1; i++)
{
if (i==0) f = 1;
else f=f * i;
}
return f;
}
return 0xFFFFFFFF;
}

最佳答案

我猜你使用的是 32 位系统,否则就可以了。

在 32 位整数上您可以表示的最大数字是 2^31(您必须为符号保留一位)。

根据您的体系结构(没有此信息无法回答您的问题),long 可能存储在 32 位上,因此您无法准确表示 16!因为它大于 2^31。

寻找你的编译器/架构的特定扩展以保证你有 64 位存储(标准不保证,它没有规定类型必须有多少位,它只是设置类型存储大小之间的不平等) .

关于具有数据类型问题的 C++ 阶乘函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183370/

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