我gcc
编译器可以让我定义为unsigned long long(即64位),字面作为文字类型:0x1ull VS 0x1llu
#define A_LITERAL 0x1ull
---或---
#define A_LITERAL 0x1llu
是这两个字面陈述之间有任何区别。这对其他C编译器是否共同?
我gcc
编译器可以让我定义为unsigned long long(即64位),字面作为文字类型:0x1ull VS 0x1llu
#define A_LITERAL 0x1ull
---或---
#define A_LITERAL 0x1llu
是这两个字面陈述之间有任何区别。这对其他C编译器是否共同?
两者都是由C标准(节6.4.4.1)允许的。
无符号后缀u
可以在长l
(或long long(ll
))后缀之前或之后。
标记这个答案的问题是在C的上下文中,这引用了C标准。 –
两者都是相同的:从C++ 11标准草案n3337摘录:
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
清理可选指标以使它们脱颖而出(标准中标有下标)。 – paxdiablo
谢谢。我希望我的“粘贴”从文档翻译会比它更好一点... –
这不是一个C++的问题。 – Potatoswatter
ull
或llu
强制编译器将常量当作unsigned
和long long integer
。
和u
的顺序并不重要,也不是他们的情况。你也可以写LLU
或ULL
。
我投票了,因为它教会了我一些东西。我已经_knew_这两种形式都是有效的,但首选'ULL',因为它匹配'unsigned long long'类型。然而,事实证明这些类型相当流畅,允许像“long unsigned long”这样的“怪异”:参见http://stackoverflow.com/questions/17287957/is-long- unsigned -as-valid-as- unsigned-long-in-c – paxdiablo