字面值常量
每个字面值常量对应一种数据类型。
整型字面值:十进制,八进制(以0开头),十六进制(以0x或0X开头)。类型short没有对应的字面值。
字符串字面值:即'a'和"Hello World!"。注意,编译器在每个字符串的结尾处添加一个空字符'\0',因此字符串字面值的实际长度比它的内容多1 。如果两个字符串位置紧邻并且仅由空格、缩进和换行符分隔,则他们实际上是一个整体。所以一个字符串如果太长,写在一行里不合适,就可以分开写:
cout << "a really, really long string literal "
<< "that spans two lines" << endl;
转义序列
程序员不能直接使用的字符:不可打印字符(如退格或其他控制符),在C++中具有特殊含义的字符(单引号,双引号,问号,反斜线)。在这些情况下需要转义序列。转义序列均以反斜线作为开始。包括如下内容:
\n \t \a \v \b \" \\ \? \' \r \f
这些转义序列被当做一个字符使用。
也可以使用泛化的转义序列,即\后面跟一个或多个十六进制数字,或跟1个,2个或3个八进制数字。
指定字面值的类型
通过在字面值中添加前缀或者后缀,可以指定字面值的默认类型。
L'a' u8"hi!" 42ULL 1E-3F 3.14159L
前缀:L宽字符,u8是UTF-8(仅用于字符串),u是Unicode16,U是Unicode32,
后缀:
整型:u或U是unsigned(会选择unsigned int,unsigned long,unsigned long long中能匹配的空间最小的一个),l或L是long,ll或LL是long long
浮点型:f或F是float,l或L是long double
指针字面值:nullptr