【问题标题】:cpp: eclipse doesn't recognize 'long long' typecpp: eclipse 无法识别“long long”类型
【发布时间】:2012-01-26 08:45:24
【问题描述】:

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

(long类型最大可以是4294967296 -1,所以我用long long)

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

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

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

(我用的是linux操作系统)

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

【问题讨论】:

  • 不熟悉eclipse,但如果是我,我会尝试int64_tuint64_t的类型。
  • @Mr Lister:这里变量的类型不是问题。
  • @kakush 你不接受其中一个答案吗?

标签: c++ linux long-long


【解决方案1】:

LL 附加到它:

long long maxCPUTime = 4294967296LL;

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

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

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

【讨论】:

  • ull 意味着unsigned long long,而他想要long long
  • 提示:使用大写 L 而不是小写 l。两者都可以编译,但对于人类来说,L 更容易(在大多数字体中)与1 区分开来。
【解决方案2】:

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

long long maxCPUTime = 4294967296LL;

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多