《C++ Primer第四版》学习笔记(四)变量和基本类型 - 字面值常量

来源:互联网 发布:关于网络信息收集 编辑:程序博客网 时间:2024/05/19 19:56

字面值常量

1. 不能修改
2. 每个字面值常量都有相应的类型。例如,0 是 int,3.14 double
3. 只有内置类型存在字面值常量
4. 没有类类型的字面值,因此,也没有任何标准库类型的字面值
5. 称之为字面值因为只能以它的值称呼它

(一)整型字面值

1. 三种:十进制(decimal) 八进制(octal) 十六进制(hexadecimal)
    20(十)020(八)0x20(十六)
2. 加L或者u分别代表long和unsigned类型,不能有空格。
书中提醒两遍:不提倡用小写字母l,容易与数值1混淆。

(二)浮点字面值规则

1. 通常可以用十进制或者科学计数法来表示浮点字面值
2. 默认的浮点字面值常量为double类型
3. 在数值后面加上F(或f)和L(或者l)分表表示单精度和双精度

(三)布尔字面值和字符字面值

1. true和false是布尔型的字面值
2. 可打印的字符型字面值通常那个用一对单引号来定义:‘a’、‘2’、‘,’、‘ ’(均是char类型的)
3. 加上L能够得到wchar_t类型的宽字符字面值:L‘a’

(四)非打印字符的转义序列

1. 转义字符表示
换行符\n水平制表符\t纵向制表符\v退格符\b回车符\r进纸符\f报警(响铃)符\a反斜线\\疑问号\?单引号\'双引号\"
2. 无论是普通字符,还是非打印字符和特殊字符,都可以表示为“通用转义字符”。如八进制形式的“\7(响铃符)、\12(换行符)、\0(空字符)、\62(数字2)”(可以对照ASCII码表看一下)。“通用转义字符”也可以用十六进制表示(\xddd)。
注:字符‘\0’通常表示空字符,还有更特殊的意义。

(五)字符串字面值

上述四种四面值都是基本内置类型,字符串字面值不属于上述类别。
1. 用双引号括起来的零个或者多个字符表示。不可打印字符表示成相应的转义序列:
  “hello world”
     “”
     “\ncc\tnihao\n”
2. 为了兼容c语言,C++中所有的字符串字面值都有编译器自动在末尾添加一个空字符。
     注意区别:
          ‘a’ :字符字面值,上述第三类,单个字符,未添加空字符
          “a”:包含‘a’和‘\0’两个字符的字符串
3. 宽字符字符串字面值,所有字符都转化为宽字符即可
     L“C++ program”

(六)字符串字面值的连接

1. 两个相邻的仅由空格、制表符、换行符分开的字符串字面值,可连接成一个新字符串字面值。
    多行书写长字符串字面值变得简单。
#include<iostream>int main(){     std::cout << "a multi-line"                      "string literal"                      "using concatenation"                      << std::endl;     return 0;}


2. 如果连接字符串面值和宽字符串字面值结果是未定义

(七)多行字面值

不常用:在一行的末尾加一反斜杠可将此行和下一行当作同一行处理
但要注意:反斜杠必须是该行的尾字符(不允许其后面由注释或者空格)。同样,后继行首的任何空格和制表符都是字符串字面值的一部分。
#include<iostream>int main(){     std::cout <<"a multi-line \string literal \using concatenation"                 << std::endl;     return 0;}

#include<iostream>int main(){     std::cout <<               "a multi-line \     string literal \          using concatenation"                 << std::endl;     return 0;}

#include<iostream>int main(){     std::cou\t << "Hi" << st\d::endl;     return 0;}

第37页,<不要依赖未定义行为>很重要。





0 0
原创粉丝点击