我在我的代码中有一些地方的下一行:长长的maxCPUTime=4294967296;
(最大的long类型可以是4294967296 -1,所以我使用long long)
问题是,当我编译时,我得到了下一个错误:
error: integer constant is too large for ‘long’ type这就好像,eclips没有意识到我写的是'long long‘,它认为我写的是'long’。
(我使用的是linux操作系统)
有人知道我为什么会得到这个错误吗?
发布于 2012-01-26 16:47:00
向其追加LL:
long long maxCPUTime = 4294967296LL;这应该可以解决问题。(与ll相比,LL更好用,因为它更容易区分。)
直到C99/C++11,long long才正式加入标准。
通常,整数字面量将具有最小类型来保存它。但是在C99/C++11之前,long long在标准中并不“存在”。(但大多数编译器都将其作为扩展),因此(在某些编译器中)大于long的整型字面值不会获得long long类型。
发布于 2012-01-26 16:49:17
问题是您的常量(4294967296)不适合int和unsigned int (实际上它也不适合long -这就是编译器所说的),并且不会自动升级为long long,因此会出现错误。您必须添加后缀LL (或ll,尽管像我这样使用11的短视人士可能会混淆后者)才能使其成为long long
long long maxCPUTime = 4294967296LL;https://stackoverflow.com/questions/9015629
复制相似问题