CPP:Eclipse无法识别"长长"类型



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

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

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

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

就好像,黄道带没有意识到我写的是"long-long",它认为我写的"long"。

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

有人知道我为什么会犯这个错误吗?

LL附加到它:

long long maxCPUTime = 4294967296LL;

这应该能解决问题。(LLll更好,因为它更容易区分。)

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

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

问题是您的常量(4294967296)不适合intunsigned int(实际上它也不适合long——编译器就是这么说的),并且不会自动升级到long long,因此出现错误。你必须添加后缀LL(或ll,尽管后者可能会被像我这样目光短浅的人混淆为11),使其成为long long:

long long maxCPUTime = 4294967296LL;

相关内容

  • 没有找到相关文章

最新更新