鱼C论坛

 找回密码
 立即注册
查看: 1380|回复: 4

C++溢出

[复制链接]
发表于 2023-10-30 09:16:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C++long long 还是溢出怎么办啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-30 09:17:09 | 显示全部楼层
如果在C++中使用long long类型仍然发生溢出,有几种可能的解决方案:

1. 使用更大的数据类型:如果long long类型仍然无法满足需求,可以考虑使用更大的数据类型,例如使用C++中的BigInt库或者自定义大数类来处理大整数。

2. 使用库函数:C++标准库中提供了一些处理大整数的函数,例如 std::numeric_limits 可以用来获取数据类型的最大值和最小值, std::overflow_error 可以用来检测溢出。

3. 使用算法优化:有时候,我们可以通过优化算法来减少溢出的可能性。例如,如果涉及到大数相乘,可以使用Karatsuba算法或者快速傅里叶变换(FFT)来减少计算量。

4. 检查输入数据:确保输入数据不会超过long long类型的范围,如果可能的话,可以对输入数据进行验证或者限制。

5. 错误处理:如果溢出是无法避免的,可以考虑使用异常处理来捕获溢出的情况,并采取相应的处理措施。

需要根据具体情况选择适合的解决方案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-30 10:13:17 | 显示全部楼层
C++ 一点不会,瞎掰一下
方法1:使用 __int64 但是貌似不是标准库的一部分 cnblogs.com/FReQuenter5156/p/int128-post.html
方法2:使用 long double 类型 可以存储很大 毕竟有128比特,再往上的话就会有精度损失
方法3:使用第三方实现的 Decimal 或者 BigInteger 类库。貌似 Boost 里边有(听说过,没用过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-30 11:05:24 | 显示全部楼层
__int128 这个你看看能不能用 , 不过不能实现位运算和输入输出 , 需要自己写
或者你学一下高精度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-3 08:43:09 | 显示全部楼层
typedef struct _BigLong
{
    long long  higth;
    long long  low;
}BigLong;
分高低位, operator运算就可以了
如果能够_int128,不需要那么复杂的,但他并不是标准库,所以要看编译支持不支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 20:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表