我正在查看一些C++代码,发现下面这段代码:
if( (size & 0x03L) != 0 )
throw MalformedBundleException( "bundle size must be multiple of four" );
十六进制值后面的 L
代表什么?
它如何改变值 0x03
?
这个后缀设置数字字面量的类型。 L
代表 long
;LL
代表 long long
类型。这个数字不需要是十六进制 - 它也适用于十进制和八进制。
3LL // A decimal constant 3 of type long long
03L // An octal constant 3 of type long
0x3L // A hex constant 3 of type long
这意味着Long,也就是说,字面量0x03L的类型为long
,而不是默认的int
。在一些平台上,这可能意味着64位,而不是32位,但这完全取决于平台(唯一的保证是long不会比int短)。
int long
。你的示例中的整数字面量是int long
的十六进制整数字面量。
你也可以遇到两个LL
(或ll
),表示类型为int long long
。
l
或L
。 - Roman R.