c++ 字面值常量

字面值常量(literal constant),“字面值”是指只能用它的值称呼它,“常量”是指其值不能修改。每个字面值都有相应的类型,3.14是double型,2是int型。只有内置类型存在字面值。

1. 整形字面值规则

整形字面值常量可以用十进制、八进制、十六进制表示。

20       // dec

024     // oct(以0开头)

0x14    // hex(以0x或0X开头)

整形字面值常量的类型默认为int或long,其值适合int就是int类型,比int大就是long类型。在数值后加L或l(小写字母l容易与数字1混淆,建议用L)可以指定为long,加U或u指定为unsigned类型,加UL或LU定义为unsigned long类型。没有short类型的字面值常量。

2. 浮点字面值规则

可以用十进制或科学计数法(指数用E或e)表示,默认为double,在数值后加F或f表示单精度,加L或l表示扩展精度。

3.14159F           .001f       12.345L         0.

3.14159E0f        1E-3F     1.2345E1L     0e0

3. 布尔字面值和字符字面值

布尔字面值:true、false。字符字面值由单引号定义:’2’(char类型)、L’a’(wchar_t类型)。

4. 非打印字符和转义序列

非打印字符和特殊字符(如单引号、双引号、反斜杠)都要写为转义字符(以反斜杠开头)。

 

无论是普通字符,还是非打印字符和特殊字符,都可以表示为“通用转义字符”。如八进制形式的“\7(响铃符)、\12(换行符)、\0(空字符)、\62(数字2)”(可以对照ASCII码表看一下)。“通用转义字符”也可以用十六进制表示(\xddd)。

5. 字符串字面值

需要用双引号括起来,非打印字符写要转义,编译器会自动在末尾添加一个空字符。

“hello c++”       // simple string literal
“”                // empty string literal
“\n hello \t c++” // string literal using newlines and tabs
L”hello c++”      // a wide string literal

6. 字符串字面值的连接

两个相邻的,仅由空格、制表符、换行符分隔的字符串字面值,将连接在一起。

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;”,该语句结果未定义,可能执行也可能崩溃。

7 多行字面值

可以使用反斜杠,将多行内容当作同一行处理。

// multiline string literal
std::cout << “a multi-line \
string literal \
using a backslash”
	  << std::endl;

反斜杠必须是行尾字符,后面不能有注释或空格。后继行行首的任何空格和制表符都是字符串字面值的一部分。

【学习资料】 《c++ primer》

posted on 2013-01-22 17:21  zhuyf87  阅读(7089)  评论(0编辑  收藏  举报

导航