C++中只有内置类型存在字面值,没有类(class)类型字面值.
例如:0是int类型的字面值,3.14159是double类型的字面值.

字面值类型很多

整型浮点字面值
20                     // decimal   十进制
024                   //  octal     八进制
0X14                 //   hexadecimal     十六进制
128u ,128U        //    unsigned
1024UL              //    unsigned long
1L                     //      long  长整形
8Lu                   //      unsigned long
3.14159F = 3.14159E0F    // float  ,科学计数
.001f  = 1E-3F         // float,科学计数
12.345L = 1.2345E1L    // long double  扩展精度 ,科学计数
0.  = 0e0           // double ,科学计数
'a'              // char     字符
L'a'              // wchar_t   宽字符
//没有short的字面常量
 
 
字符串字面值
 
字符串字面值是一串常量字符,字符串字面值常量由双引号括起来,字符字面值常量用单引号括起来.
 
为了兼容C语言,C++中的字符串字面值将由编译器自动在末尾添加一个空字符串.
'A'  :     表示单个字符A
"A" :     表示字符A和空字符两个字符的字符串
同理 也存在宽字符串
L"a wide string literal"  : 一串宽字符+宽空字符
 
字符串字面值连接
不同类型的字符串不能连接: 字符串字面值 和宽字符串字面值不能连接
std::cout << "a multi-line "
                    "string literal "
                    "using concatenation"
                    << std::endl;
可以正确执行 : a multi-line string literal using concatenation
但是
std::cout << "multi-line " 
                    L"literal" <<std::endl;
将编译错误.
另外多行字面值还有一种写法:
std::cout << "a multi-line \
string literal \
using concatenation" << std::endl;
注意的是"\"必须是该行的末尾,后面不能有注释或者空格
 
 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
04-25 18:47