文字类型:0x1ull与0x1llu

Ben*_*ber 6 c literals

我的gcc编译器允许我将无符号长long(即64位)文字定义为

#define A_LITERAL 0x1ull
Run Code Online (Sandbox Code Playgroud)

- - 要么 - -

#define A_LITERAL 0x1llu
Run Code Online (Sandbox Code Playgroud)

这两个文字陈述之间是否有任何区别.这对其他C编译器来说是否常见?

Mat*_*son 6

两者都是相同的:摘自n3337 C++ 11标准草案:

integer-suffix:
    unsigned-suffix long-suffix(opt)
    unsigned-suffix long-long-suffix(opt)
    long-suffix unsigned-suffix(opt)
    long-long-suffix unsigned-suffix(opt)

unsigned-suffix: one of
    u U

long-suffix: one of
    l L

long-long-suffix: one of
    ll LL
Run Code Online (Sandbox Code Playgroud)

  • +1因为这也是一个C++问题. (2认同)

Som*_*ude 3

C 标准(第 6.4.4.1 节)允许两者。

无符号后缀u可以位于 long l(或 long long ( ll))后缀之前或之后。