【发布时间】:2013-07-10 23:26:31
【问题描述】:
我正在使用开发 C++
不稳定的线是......
long long n=600851475143;
错误说明:
integer constant is too long for "long" type
我在处理大数字时需要帮助。
【问题讨论】:
-
你使用的是什么编译器/操作系统/内存模型?
标签: c++
我正在使用开发 C++
不稳定的线是......
long long n=600851475143;
错误说明:
integer constant is too long for "long" type
我在处理大数字时需要帮助。
【问题讨论】:
标签: c++
long long n = 600851475143LL;
附加 LL 使其成为 long long 文字。顺便说一句,long long 直到 C++11 才被标准化。
【讨论】:
在它后面加上一个 LL。
long long n=600851475143LL;
【讨论】:
LL 而不是L? L 使其成为 long,原始发帖人收到的错误消息暗示该常量不适合 long 类型。
不带后缀的整型常量得到int long int 和long long int 中最小的可以容纳该值的值(2.14.2,表6),因此,假设该值需要long long,@ 987654325@ 的类型为 long long。从错误消息来看,编译器似乎将常量视为long 类型而不是long long。所以添加LL 是编译器错误的解决方法。
【讨论】:
long long 来自 C99,这里 C99 也有同样的要求。无论如何,支持long long 但不支持整数常量的隐式类型显然是一个错误。
看来你的编译器(g++?) 对long long 类型的支持不太好,数字应该加LL 后缀,Visual C++ 不支持。尝试使用 __int64 代替 n:
__int64 n=600851475143;
gcc 和 Visual C 在 Windows 上都支持 __int64。
【讨论】: