【问题标题】:Dealing with big numbers in C++ [duplicate]在 C++ 中处理大数字 [重复]
【发布时间】:2013-07-10 23:26:31
【问题描述】:

我正在使用开发 C++

不稳定的线是......

long long n=600851475143;

错误说明

integer constant is too long for "long" type

我在处理大数字时需要帮助。

【问题讨论】:

  • 你使用的是什么编译器/操作系统/内存模型?

标签: c++


【解决方案1】:
long long n = 600851475143LL;

附加 LL 使其成为 long long 文字。顺便说一句,long long 直到 C++11 才被标准化。

【讨论】:

    【解决方案2】:

    在它后面加上一个 LL。

    long long n=600851475143LL;
    

    【讨论】:

    • 您的意思是LL 而不是LL 使其成为 long,原始发帖人收到的错误消息暗示该常量不适合 long 类型。
    • @PhilipKendall 哎呀,是的,我做到了。
    【解决方案3】:

    不带后缀的整型常量得到int long intlong long int 中最小的可以容纳该值的值(2.14.2,表6),因此,假设该值需要long long,@ 987654325@ 的类型为 long long。从错误消息来看,编译器似乎将常量视为long 类型而不是long long。所以添加LL 是编译器错误的解决方法。

    【讨论】:

    • 据我了解,这是 C++11 的特性。对于 C++98,这不是错误。
    • @PhilipKendall - long long 来自 C99,这里 C99 也有同样的要求。无论如何,支持long long 但不支持整数常量的隐式类型显然是一个错误。
    【解决方案4】:

    看来你的编译器(g++?) 对long long 类型的支持不太好,数字应该加LL 后缀,Visual C++ 不支持。尝试使用 __int64 代替 n:

    __int64 n=600851475143;
    

    gcc 和 Visual C 在 Windows 上都支持 __int64。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2012-03-03
      • 2010-09-12
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      相关资源
      最近更新 更多