我在代码的下一行中有一些位置:long-long maxCPUTime=4294967296;
(最大的数字长型可以是4294967296-1,所以我用了长型)
问题是,当我编译时,我会得到下一个错误:
error: integer constant is too large for ‘long’ type
就好像,黄道带没有意识到我写的是"long-long",它认为我写的"long"。
(我使用的是linux操作系统)
有人知道我为什么会犯这个错误吗?
将LL
附加到它:
long long maxCPUTime = 4294967296LL;
这应该能解决问题。(LL
比ll
更好,因为它更容易区分。)
long long
直到C99/C++11才正式加入标准。
通常情况下,整数文本将具有容纳它的最小类型。但在C99/C++11之前,long long
在标准中并不"存在"。(但大多数编译器都将其作为扩展)因此(在某些编译器下)大于long
的整数文本不会得到long long
类型。
问题是您的常量(4294967296)不适合int
和unsigned int
(实际上它也不适合long
——编译器就是这么说的),并且不会自动升级到long long
,因此出现错误。你必须添加后缀LL
(或ll
,尽管后者可能会被像我这样目光短浅的人混淆为11
),使其成为long long
:
long long maxCPUTime = 4294967296LL;