(点击上方公众号,可快速关注)
C++11引入了自定义字面量,由于这个语言特性的外延较大,为了系统介绍它,先把字面量的知识补全。在看语言规范的过程中,的确发现了好多知识点是以前没接触过的,这些没接触过的知识点主要来源两方面:
C++11后修复。现代C++在越来越多的方面修复早期C++不合理的地,甚至C语言的一些不合理的规则,比如,本篇文章要介绍的整数字面量的整数提升规则。
C++11后新增。增加了一些方便的语言特性,用于提升代码可读和生产力。比如,二进制整数字面量、数字分隔符等。
为了保持文章的轻量级,本篇主要介绍字面量的概念和整数字面量、浮点字面量的内容。
何为字面量
简单来说,字面量就是从字面上看,它的值等于其自身的常量。在C语言中,通常称之为常量,而在C++中,常量包含的内容要多于C,所以被称之为字面量。
注意上面标黑的文字,这是字面量最重要的特征,基本上所有的语言都遵循这个原则。由于C++没有提供REPL(Read-Eval-Print-Loop),我们这里拿Python举例:
>>> 1
1
>>> 'abc'
'abc'
>>> 1.0
1.0
在Python中,字面量有整数、浮点数和字符串等几类,可以看到,对字面量求值之后,结果的值就是字面量本身,在C++中同样如此。
字面量的种类
在C++中,字面量包括7类。
整数字面量(integer literal)
前缀
前缀标识进制信息,没有前缀代表默认的10进制。
42; //10进制,无前缀
052; //8进制,前缀0
0x2a; //16进制,前缀0x
0