kak*_*ush 6 c++ linux long-long
我的代码中有一些下一行:long long maxCPUTime = 4294967296;
(最长的数字类型可以是4294967296 -1,所以我用了很长的)
问题是,当我编译时,我得到下一个错误:
error: integer constant is too large for ‘long’ type
Run Code Online (Sandbox Code Playgroud)
好像,eclips不承认我写了"long long",它认为我写的是'long'.
(我使用的是linux操作系统)
有谁知道为什么我会收到这个错误?
附加LL到:
long long maxCPUTime = 4294967296LL;
Run Code Online (Sandbox Code Playgroud)
那应该可以解决问题.(因为它更容易区分,所以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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
930 次 |
| 最近记录: |