我不知道 DevCPP 是如何工作的,但您需要做的是从 Matt 的库中复制文件并将它们放在与您的代码 ( ?) 文件.c
相同的文件夹中。.cpp
然后你必须编译这些文件,就像编译所有代码一样。那应该可以解决这个问题。这样做的方法是特定于编译器的,但我在这里找到了 DevCPP 的说明:http ://www.uniqueness-template.com/devcpp/ 显然你需要创建一个“项目”,然后添加你的代码和他的代码给它。这就是您使用多个源文件编写程序的方式,这对于编写几乎任何程序都是绝对必要的知识。
您提到您的演示测试代码有错误的答案,并且代码是
BigInteger num = 123456789*123456789*123456789;
这是因为你有整数123456789
,乘以整数123456789
(溢出),然后乘以整数123456789
(再次溢出),然后将该结果转换为BigInteger
. 显然,这是不对的。您的代码应该如下所示:
BigInteger first = 123456789; //yes, you can convert from int to BigInteger
BigInteger second = 123456789;
BigInteger third = 123456789;
BigInteger num = first *second *third;
由于您想从 转换int64_t
为BigInteger
,因此您必须跳过一个小圈,因为BigInteger
设计时并未int64_t
考虑到这一点。所以这里有一个转换函数。
BigInteger int64_to_BigInt(int64_t v)
{ return BigInteger(int(v/INT_MAX))*INT_MAX+int(v%INT_MAX);}
int64_t BigInt_to_int64(BigInteger v)
{
BigInteger bottom;
v.divideWithRemainder(INT_MAX, bottom);
return int64_t(v.toInt())*INT_MAX + bottom.toUnsignedInt();
}