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

时间:2012-01-26 08:45:24

标签: c++ linux long-long

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

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

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

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

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

(我正在使用linux操作系统)

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

2 个答案:

答案 0 :(得分:6)

LL附加到其中:

long long maxCPUTime = 4294967296LL;

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

在C99 / C ++ 11之前,

long long未正式添加到标准中。

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

答案 1 :(得分:5)

问题是你的常量(4294967296)不适合intunsigned int(实际上它也不适合long - 这就是编译器所说的)并且不会自动提升为long long,从而导致错误。您必须添加后缀LL(或ll,但后者可能会被像11这样的目标短视的人混淆,以使其成为long long

long long maxCPUTime = 4294967296LL;