字面值常量:称之为字面值是因为只能用它的值来称呼它,称之为常量是因为它的值不能修改。
例如: 0是int型,3.14159是double型。
注意:只有内置类型存在字面值,没有类类型的字面值。因此,也没有任何标准库类型的字面值。
1 整型字面值规则
20 //decimal
024 //octal
0x14 //hexadecimal
字面值整数常量的类型默认为int或long类型。
显示的增加后缀来强制转换字面值整数常量。
128L //long类型的字面值整数常量,请不要使用"L"的小写,因为那和"i"的大写很相似。
128u //unsigned int
1024Lu 8uL //unsigend long
注意:没有short类型的字面值常量。
C++标准规定了每个算术类型的最小存储空间,但它并不住址编译器使用更大的存储空间。
类型 含义 最小存储空间
bool 布尔型 无最小存储空间
char 字符型 8位
wchar_t 宽字符型 16位
short 短整型 16位
int 整型 16位
long 长整型 32位
float 单精度浮点数 6位有效数字
double 双精度浮点数 10位有效数字
long double 扩展精度浮点型 10位有效数字
2 浮点字面值规则
使用科学计数法时,指数用E或者e表示。
默认浮点字面值常量为double类型。
在数值的后面加上F或f表示单精度,同样加上L或者l 表示扩展精度。
3.14159F == 3.14159E0F
0.001f == 1E-3F
12.345L == 1.2345E1L
0. == 0e0
3 布尔字面值和字符字面值
bool test=false;
char ch=’a‘;
wchar_t h=L'a';
4 非打印字符的转义序列
不可打印字符和特殊字符都用转义字符书写。转义字符都以反斜线符号开始。
换行符 \n == newline 水平制表符 \t == tab
纵向制表符 \v == vertical tab 退格符 \b == backspace
回车符 \r == return 进纸符 \f == file
报警(响铃)符 \a == alarm 反斜杠 \\
疑问号 \? 单引号 \'
双引号 \"
还可以将任何字符表示为以下的通用专用字符
\ooo
ooo表示三个八进制数字,这三个数字表示字符的数字值。
\7 响铃符 \12 换行符 \0 空字符
\xddd
由一个反斜线符,一个x和一个或者多个十六进制数字组成。
5 字符串字面值
字符串字面值常量用双引号括起来的另个或者多个字符表示。
"Hello World" //simple string literal
"" //empty string literal
宽字符串字面值,一样在前面加"L":
L"a wide string literal"
6 字符串字面值的连接
std::cout<< "a multi-line "
"string literal "
"using concatenation"
<<std::endl;
如果连接字符串字面值和宽字符串字面值:
std::cout<<"multi-line "L"literal "<<std::endl; //error ,undefined
7 多行字面值
在一行的末尾加一反斜杠符号可将此行和下一行当做同一行处理
C++格式非常自由。特别是有些地方不能插入空格,其中之一就是在单词中间。
特别市不能再单词中间断开一行。但可以通过使用反斜杠符号巧妙实现:
std::cou\
t<<"hi"<<st\
d:endl;
等价于
std::cout<<"hi"<<std::endl;
注意:反斜线符号必须是改行的尾字符-----不允许其后面有注释或空格。同样,后继行行首的任何空格和制表符都是字符串字面值的一部分。因此,长字符串字面值的后继行才会有正常的缩进。