-2

如果我有以下代码:

#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision


int main()
{
    int128_t a = Func_a()
    int128_t b = Func_b()

    std::cout << std::max(a, b) << std::endl;
    return 0;
}

如果我在 Ubuntu 上使用 g++ 进行编译,我会收到以下错误:

错误:无法在赋值中将 'const boost::multiprecision::number >' 转换为 'int64 {aka long long int}'

比较两个 int128_t 数字以查看哪个更大的正确方法是什么?

编辑:我正在使用 std::max。

4

1 回答 1

1

您的代码(除了缺少分号)编译并运行没有错误。

但是,根据您的编译器消息,我怀疑在

int128_t a = Func_a(); // are you really sure it is int128_t?

左侧不是 a boost::multiprecision::int128_t,因为编译器说它是 int64。

于 2017-10-23T05:31:07.433 回答