C++溢出
C++long long 还是溢出怎么办啊 如果在C++中使用long long类型仍然发生溢出,有几种可能的解决方案:1. 使用更大的数据类型:如果long long类型仍然无法满足需求,可以考虑使用更大的数据类型,例如使用C++中的BigInt库或者自定义大数类来处理大整数。
2. 使用库函数:C++标准库中提供了一些处理大整数的函数,例如 std::numeric_limits 可以用来获取数据类型的最大值和最小值, std::overflow_error 可以用来检测溢出。
3. 使用算法优化:有时候,我们可以通过优化算法来减少溢出的可能性。例如,如果涉及到大数相乘,可以使用Karatsuba算法或者快速傅里叶变换(FFT)来减少计算量。
4. 检查输入数据:确保输入数据不会超过long long类型的范围,如果可能的话,可以对输入数据进行验证或者限制。
5. 错误处理:如果溢出是无法避免的,可以考虑使用异常处理来捕获溢出的情况,并采取相应的处理措施。
需要根据具体情况选择适合的解决方案。 C++ 一点不会,瞎掰一下
方法1:使用 __int64 但是貌似不是标准库的一部分 cnblogs.com/FReQuenter5156/p/int128-post.html
方法2:使用 long double 类型 可以存储很大 毕竟有128比特,再往上的话就会有精度损失
方法3:使用第三方实现的 Decimal 或者 BigInteger 类库。貌似 Boost 里边有(听说过,没用过 __int128 这个你看看能不能用 , 不过不能实现位运算和输入输出 , 需要自己写
或者你学一下高精度 typedef struct _BigLong
{
long longhigth;
long longlow;
}BigLong;
分高低位, operator运算就可以了
如果能够_int128,不需要那么复杂的,但他并不是标准库,所以要看编译支持不支持{:10_266:}
页:
[1]