cpp:eclipse不承认'long long'类型

kak*_*ush 6 c++ linux long-long

我的代码中有一些下一行:long long maxCPUTime = 4294967296;

(最长的数字类型可以是4294967296 -1,所以我用了很长的)

问题是,当我编译时,我得到下一个错误:

error: integer constant is too large for ‘long’ type
Run Code Online (Sandbox Code Playgroud)

好像,eclips不承认我写了"long long",它认为我写的是'long'.

(我使用的是linux操作系统)

有谁知道为什么我会收到这个错误?

Mys*_*ial 6

附加LL到:

long long maxCPUTime = 4294967296LL;
Run Code Online (Sandbox Code Playgroud)

那应该可以解决问题.(因为它更容易区分,所以LL优先考虑ll.)

long long 直到C99/C++ 11才正式添加到标准中.

通常,整数文字将具有保持它的最小类型.但在C99/C++ 11之前,标准中long long并没有"存在".(但是大多数编译器都将它作为扩展)因此(在某些编译器下)大于的整数文字long不会得到long long类型.


vit*_*aut 5

问题是你的常量(4294967296)不适合int和unsigned int(实际上它不适合long- 这就是编译器所说的)并且不会自动提升long long,因此错误.你必须添加后缀LL(或者ll虽然后者可能被像我这样的短视的人混淆11)来制作它long long:

long long maxCPUTime = 4294967296LL;
Run Code Online (Sandbox Code Playgroud)