Literal types: 0x1ull vs 0x1llu

前端 未结 3 1906
感动是毒
感动是毒 2021-01-18 10:30

My gcc compiler allows me to define an unsigned long long (i.e. 64-bit) literal as

#define A_LITERAL 0x1ull

--- or ---

相关标签:
3条回答
  • 2021-01-18 10:39

    Both are the same: excerpt from n3337 draft of C++11 standard:

    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
    
    0 讨论(0)
  • 2021-01-18 10:44

    Both are allowed by the C standard (section 6.4.4.1).

    The unsigned suffix u can be before or after the long l (or long long (ll)) suffix.

    0 讨论(0)
  • 2021-01-18 10:49

    ull or llu force the compiler to treat a constant as an unsigned and long long integer.
    The order of ll and u doesn't matter, nor their case. you may also write LLU or ULL.

    0 讨论(0)
提交回复
热议问题