6

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

(long 类型最大可以是 4294967296 -1 ,所以我用 long long)

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

error: integer constant is too large for ‘long’ type

就好像,eclips 不承认我写了“long long”,它认为我写了“long”。

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

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

4

2 回答 2

6

附加LL到它:

long long maxCPUTime = 4294967296LL;

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

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

通常,整数文字将具有容纳它的最小类型。但在 C99/C++11 之前,long long标准中并不“存在”。(但大多数编译器将它作为扩展)因此(在某些编译器下)整数文字大于long不获取long long类型。

于 2012-01-26T08:46:59.857 回答
5

问题是您的常量 (4294967296) 不适合intand unsigned int(实际上它也不适合long- 这就是编译器所说的)并且不会自动提升为long long,因此出现错误。您必须添加后缀LL(或者ll尽管后者可能会被像我这样短视的人混淆11)才能使它long long

long long maxCPUTime = 4294967296LL;
于 2012-01-26T08:49:17.337 回答