考虑以下 MCVE:
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
int main()
{
boost::multiprecision::cpp_int x = 10;
x *= 10000000000000000000000000000000000000000000000000000000000000;
std::cout<<x<<std::endl;
return 0;
}
由于明显的溢出,它会产生错误的结果int
。假设我不想涉及字符串,我该如何正确地做到这一点?是否有类似“数字移位运算符”或幂函数可以便宜地(或尽可能便宜地)做到这一点?
为什么?因为我有一个我编写的固定精度库,并且缩放内部整数需要这样的操作是 100% 安全的。
在此处查找示例。