"<任何十六进制数>L"中的L代表什么?

7

我正在查看一些C++代码,发现下面这段代码:

if( (size & 0x03L) != 0 )
    throw MalformedBundleException( "bundle size must be multiple of four" );

十六进制值后面的 L 代表什么?

它如何改变值 0x03


3
C ++ 整数常量长整型后缀:其中之一为 lL - Roman R.
3个回答

8

这个后缀设置数字字面量的类型。 L 代表 longLL 代表 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

8

这意味着Long,也就是说,字面量0x03L的类型为long,而不是默认的int。在一些平台上,这可能意味着64位,而不是32位,但这完全取决于平台(唯一的保证是long不会比int短)。


2
这意味着所谓的整数字面量的长后缀,并表示字面量的类型为int long。你的示例中的整数字面量是int long的十六进制整数字面量。 你也可以遇到两个LL(或ll),表示类型为int long long

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接