C++ primer 二 转义序列

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

换行符               \n                      横向制表符                 \t                      报警(响铃)符        \ a

纵向制表符       \v                      退格符                         \b                     双引号                        \"

反斜线               \\                       问号                             \?                     单引号                        '\ 

回车符               \r                      进纸符                         \f

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

std:: cout << '\n' ; // 转到新一行

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

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

\7 (响铃)          \12 (换行符)           \40(空格)

\0 (空字符)      \115 (字符M)           \x4d (字符M)

我们可以像使用普通字符那样使用C++语言定义的转义序列:

std::cout << "Hi \x4dO\115 ! \n"; //输出 Hi MOM!, 转到新一行

std::cout << ' \115' <<'\nr' ;         //输出 M,转到新一行

        注意,如果反斜线\后面跟着的八进制数字超过3个,只有前3个数字与\构成转义序列。例如,”\1234"表示2个字符,即八进制数123对应的字符以及字符4。相反,\x要用到后面跟着的所有数字,例如,"\xl234’’表示一个16位的字符,该字符由这4个十六 进制数所对应的比特唯一确定。因为大多数机器的char型数据占8位,所以上面这个例子可能会报错。一般来说,超过8位的十六进制字符都是与表中某个前缀作为开头的 扩展字符集一起使用的。

指定字面值的类型

通过添加如表中所列的前缀和后缀,可以改变整型、浮点型和字符型字面值的默 认类型。

L'a'               //宽字符型字面值,类型是wchar_t

u8"hi!"          // utf-8字符串字面值(utf-8用8位编码一个Unicode字符)

42ULL          //无符号整型字面值,类型是unsigned long long

1E-3F           //单精度浮点型字面值,类型是float

3.14159L     //扩展精度浮点型字面值,类型是long double


       对于一个整型字面值来说,我们能分别指定它是否带符号以及占用多少空间。如果后 缀中有U,则该字面值属于无符号类型,也就是说,以U为后缀的十进制数、八进制数或 十六进制数都将从 unsigned int、unsigned long 和 unsigned long long 中选择 能匹配的空间最小的一个作为其数据类型。如果后缀中有L,则字面值的类型至少是long;
如果后缀中有LL,则字面值的类型将是long long和unsigned long long中的一种。显然我们可以将U与L或LL合在一起使用。例如,以UL为后缀的字面值的数据类型将根据具体数值情况或者取unsigned long,或者取unsigned long long



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值