0

I wrote simple C++/CLI code to calculate a result of big integer numbers operation, but it failed with the warning warning C4307: '*' : integral constant overflow, here is my code:

int main(array<System::String ^> ^args)
{
    String^ number = gcnew String((wchar_t *)(28433 * (2 ^ 7830457) + 1));

    Console::WriteLine(number);
    return 0;
}
4

2 回答 2

1

2 ^ 7830457 需要 7830457 位来存储。一个号码大约1MB!
您应该从学习变量类型和它们可以处理的值开始。你真的需要这个数字的精确整数值吗?你真的需要展示它吗?这个数字有几百万个字符长。

您不能对此类数字使用常规 */-+^ 运算符,您需要一个任意大数数学库。而且我担心它甚至无法处理这么大的数字。 如何处理任意大的整数

于 2012-09-02T09:24:41.227 回答
1

您的代码中有一些基本的误解:

  1. 你没有在任何地方使用大整数
  2. ^是异或,而不是指数。
  3. 您正在将该整数转换为指针,这是一个毫无意义的操作

您应该使用BigInteger来自. System.Numerics不要忘记首先添加程序集引用System.Numerics.dll

于 2012-09-02T10:44:09.027 回答