设为首页 加入收藏

TOP

2.1.3 字面值常量(1)
2013-10-07 16:25:19 来源: 作者: 【 】 浏览:85
Tags:2.1.3 面值 常量

2.1.3  字面值常量(1)

一个形如42的值被称作字面值常量(literal),这样的值一望而知。每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型。

整型和浮点型字面值

我们可以将整型字面值写作十进制数、八进制数或十六进制数的形式。以0开头的整数代表八进制数,以0x或0X开头的代表十六进制数。例如,我们能用下面的任意一种形式来表示数值20:

  1. 20 /* 十进制 */      024 /* 八进制 */      0x14 /* 十六进制 */ 

整型字面值具体的数据类型由它的值和符号决定。默认情况下,十进制字面值是带符号数,八进制和十六进制字面值既可能是带符号的也可能是无符号的。十进制字面值的类型是int、long和long long中尺寸最小的那个(例如,三者当中最小是int),当然前提是这种类型要能容纳下当前的值。八进制和十六进制字面值的类型是能容纳其数值的int、unsigned int、long、unsigned long、long long和unsigned long long中的尺寸最小者。如果一个字面值连与之关联的最大的数据类型都放不下,将产生错误。类型short没有对应的字面值。在表2.2(第40页)中,我们将以后缀代表相应的字面值类型。

尽管整型字面值可以存储在带符号数据类型中,但严格来说,十进制字面值不会是负数。如果我们使用了一个形如 42的负十进制字面值,那个负号并不在字面值之内,它的作用仅仅是对字面值取负值而已。

浮点型字面值表现为一个小数或以科学计数法表示的指数,其中指数部分用E或e标识:

  1. 3.14159      3.14159E0      0.      0e0      .001 

默认的,浮点型字面值是一个double,我们可以使用表2.2(第40页)中的后缀来表示其他浮点型。

字符和字符串字面值

由单引号括起来的一个字符称为char型字面值,双引号括起来的零个或多个字符则构成字符串型字面值。

  1. ′a′     // 字符字面值  
  2. "Hello World!"  // 字符串字面值 

字符串字面值的类型实际上是由常量字符构成的数组(array),该类型将在3.5.4节(第122页)介绍。编译器在每个字符串的结尾处添加一个空字符(′\0′),因此,字符串字面值的实际长度要比它的内容多1。例如,字面值'A'表示的就是单独的字符A,而字符串"A"则代表了一个字符的数组,该数组包含两个字符:一个是字母A、另一个是空字符。

如果两个字符串字面值位置紧邻且仅由空格、缩进和换行符分隔,则它们实际上是一个整体。当书写的字符串字面值比较长,写在一行里不太合适时,就可以采取分开书写的方式:
 

  1. // 分多行书写的字符串字面值  
  2. std::cout << "a really, really long string literal "  
  3.               "that spans two lines" << std::endl

转义序列

有两类字符程序员不能直接使用:一类是不可打印(nonprintable)的字符,如退格或其他控制字符,因为它们没有可视的图符;另一类是在C++(www.cppentry.com)语言中有特殊含义的字符(单引号、双引号、问号、反斜线)。在这些情况下需要用到转义序列(escape sequence),转义序列均以反斜线作为开始,C++(www.cppentry.com)语言规定的转义序列包括:

  1. 换行符       \n        横向制表符   \t      报警(响铃)符   \a  
  2. 纵向制表符   \v      退格浮       \b        双引号            \"  
  3. 反斜线       \\        问号         \        单引号            \'  
  4. 回车符       \r        进纸符       \f 

在程序中,上述转义序列被当作一个字符使用:

  1. std::cout << '\n';          // 转到新一行  
  2. std::cout << "\tHi!\n";     // 输出一个制表符,输出"Hi!",转到新一行 

我们也可以使用泛化的转义序列,其形式是\x后紧跟1个或多个十六进制数字,或者\后紧跟1个、2个或3个八进制数字,其中数字部分表示的是字符对应的数值。假设使用的是Latin-1字符集,以下是一些示例:

  1. \7 (响铃)     \12 (换行符)        \40(空格)  
  2. \0 (空字符)    \115 (字符M)   \x4d (字符M) 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.1.2 类型转换(2) 下一篇2.1.3 字面值常量(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)