c++字面值常量

内容整理摘自C++ Primer (中文第四版)
整型字面值
字面值整数常量的类型默认为int或long类型,精度类型决定于字面值–其值适合int就是int类型,适合long就是long类型。
通过增加后缀能够强制将字面值整数常量转换为long,unsigned 或 unsigned long 类型通过在数值后面加”L”或”l”。
通过在数值后面加U或u定义unsigned类型。同时加L和U就能够得到unsigned long类型字面值。但其后缀不能有空格。
such as : 128u 1L 1024UL 8Lu

浮点字面值规则:通常可以用十进制或者科学计数法来表示浮点字面值常量。
such as: 3.14159F 3.14159E0f E0f表示以十为底数0为指数的幂 f代表单精度
.001f 1E-3F .001f代表0.001f 1E-3F 表示 (1*10^3)F
12.345L 等价于 12.345E0L
0. 等价于 0e0 (即:0*10^0) (这部分没有验证,输出结果即为0,看不出是什么类型,有资料说0.即表示double 此为他的地址链接,在此还留待验证)

布尔字面值与字符型字面值
bool true = false;
‘a’ ‘2’ ‘,’
字符字面值前加L就能够得到wchar_t类型的宽字符字面值。

非打印字符的转义序列
不可打印字符 与特殊字符都用转义字符书写
转义字符都以反斜线符号开始 ‘\’ (区别 ‘/’是斜杠)
c++语言中定义了如下转义字符:
换行符\n 水平制表符\t 纵向制表符\v 退格符\b 回车符\r 退纸符\f
报警(响铃)符\a 反斜杠\ 疑问号\? 单引号\’ 双引号\”
我们可以使用任何字符表示为以下形式的通用转义字符:
\ooo 这里 ooo表示三个八进制数字,这三个数字表示字符的数字值。
下面的例子是用ASCII码字符集表示字面值常量
\7 响铃符 \12 换行符 \40 空格符
\0 空字符 \062(‘2’) \115 (‘M’)
同样也可以用十六进制转义字符来定义字符 //—————————-(此部分未有详细理解)——-
\xddd
字符串字面值
字符串字面值(相对于前面几种字面值)更加复杂 字符串字面值 是一串常量字符。
不可打印字符表示成相应的转义字符
为了兼容 c语言 c++中所有的字符串字面值都由编译器自动在末尾添加一个空字串。字符字面值’A’ 而”A”表示包含字母A和空字符两个字符的字符串。//———-验证过程中并没有如书中所讲:在字符串字面值末尾存在空格(留待验证)
也在存在宽字符串字面值,正如存在宽字符字面值:L’a’ 也存在宽字符串字面值,一样在前面加”L”,如L”a wide string literal”。

字符串字面值的连接
两个仅相邻的仅由空格、制表符或换行符分开的字符串字面值(或宽字符串字面值),可连接成一个新字符串字面值。这使得多行书写长字符串字面值变得简单。
此部分结果 显示 “a multi-line” 与 “using concatenation”之间存在空格符”string literal”与”using concatenation”之间 也存在空格符

如果连接字符串字面值和宽体字符串字面值,将会出现什么结果呢?
其结果是未定义的,也就是说连接不同类型的行为标准没有定义。这个程序可能会执行,也可能崩溃或者产生没有用的值。

多行字面值
字符串有一个基本的但不常用的方法,这个方法依赖于很少使用的程序格式化特性:在一行的末尾加一反斜线符号可将此行和下一行当做同一行处理。
c++的格式非常自由。特别是一些地方不能插入空格,其中之一是在单词中间。特别是在单词中间断开一行。但可以通过反斜线符号巧妙地实现:
此部分验证时解决了遇到的换行也未能实现的问题。

int main(int argc, char** argv) {

    "Hello World!"; //simple string literal
    "";//empty string literal
    cout << "\nCC\toptions\tfile.[cC]" << endl; //string literal using newlines and tabs

    cout << "a multi-line"
        "string literal"
        "using concatenation"
        << endl;
    system("pause");
    return 0;
}

字符串连接部分结果

int main(int argc, char** argv) {

    "Hello World!"; //simple string literal
    "";//empty string literal
    cout << "\nCC\toptions\tfile.[cC]" << endl; //string literal using newlines and tabs

    cout << "a multi-line"
        "string literal"
        "using concatenation"
        << endl;

    //cout << L"This is a wide string literal." << endl;
    //宽体字符的应用返回补充方式尚不明确,如后续有涉及再回来补充。


    cou\
        t << "hi" << endl;//后继行开头是不可以有空格的
                          //等价于   cout<< "Hi"<<endl;
    system("pause");
    return 0;
}

整个结果
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值