第2章 变量和基本类型
2.1 基本内置类型
2.2 字面值常量
2.3 变量
2.4 const限定符
2.5 引用
2.6 typedef 名字
2.7 枚举
2.8 类类型
2.9 编写自己的头文件
2.1 基本内置类型
2.1.1 字符类型:
char 和 wchar_t , char通常是1byte;wchr_t用于扩展字符集比如汉字,占用2byte;
char 有3种不同的类型:普通char、unsigned char、signed char,但只有2中表达方式。
可以使用unsigned char 或 signed char表示char类型,使用哪种char表示方式有编译器决定。
2.1.2 浮点数
float类型只能保证6为有效数字;
double至少10为有效数字;
2.2字面值常量
2.2.1 整型字面值规则
以0(零)开头的的字面值常量表示八进制,以0x开头表示十六进制;
通过增加后缀,能强制将字面值整数常量转换为long、unsigned或signed long
在数值后面加 L 指定为long类型
128u /* unsigned */
1L /* long */
1024UL /* unsigned long*/
8Lu /* unsigned long*/
没有short类型的字面值常量
2.2.2 浮点字面值规则
默认的浮点字面值常量为double型;
在数值后面加上 F 或 f 表示单精度;
指数用 E 或 e 表示;
2.2.3 布尔和字符字面值
'a' char类型,L'a' 表示wchar_t类型;
2.2.4 转义字符
换行符 /n
纵向制表符 /v
回车符 /r
报警符 /a
疑问号 /?
双引号 /"
水平制表符 /t
退格符 /b
进纸符 /f
反斜杠 //
单引号 /'
'/0' 空字符
2.2.5 字符串字面值
C++中所有的字符串都由编译器自动在末尾添加一个空字符;
L"wchar_t" 宽字符串;
2.2.6 字符串的连接
两个相邻的仅由空格、制表符或换行符分开的字符串,可连接成一个新的字符串:
//concatenated long string literal
std::cout << "a multi-line "
"string literal "
"using concatenation"
<< std::endl;
output:
a multi-line string literal using concatenation
2.2.7 多行字面值
在一行末尾加一反斜杠符号可将次行和下一行当做同一行处理;
注意反斜杠必须是该行的尾字符,不允许其后面有空格或注释
2.3 变量
2.3.1 C++是一门静态类型语言,在编译时会做类型检查;
2.3.2 什么是变量
变量提供了程序可以操作的有名字的存储区;
2.3.3 定义对象
1)初始化 :
int ival(1024);
int ival = 1024 ;
2)初始化不是赋值:初始化时创建变量并给它赋初始值;赋值是擦除对象的当前值并用新值代替。
3)直接初始化语法更灵活且效率更高;
2.3.4 定义:用于为变量分配存储空间,还可以为变量制定初始值,在一个程序中,变量有且仅有一个定义;
2.3.5 声明:用于向程序表明变量的类型和名字,定义也是声明;
2.3.6 extern
1)声明变量而不定义;
2)如果声明有初始化式,那么它可被当做是定义,如
extern double pi = 3.14;
2.4 const限定符
2.4.1 定义const常量
因为常量在定义后不能修改,所以定义是必须初始化。
2.4.2 const对象默认为文件的局部变量
费const对象默认为extern, 要使const对象能够在其他的文件中访问,必须显式的指定他为extern。
2.5 引用
2.5.1 定义:引用就是对象的另一个名字,在实际程序中,引用主要用作函数的形式参数。
例:int ival = 1024;
int &refval = ival;
2.5.2 初始化
引用必须用于该引用同类型的对象初始化。
2.5.3 const 引用
const引用指向const对象的引用。
非const引用只能绑定到与该引用同类型的对象。
const引用可以绑定到不同但关联的类型的对象或绑定到右值。
2.6 typedef
typedef可以用来定义类型的同义词。
typedef通常被用于以下三种目的:
1.为了隐藏特定类型的实现,强调使用该类型的目的;
2.简化复杂的类型定义,使其更易理解;
3.允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。
2.7 类类型
1.从操作开始设计类。
2.8 头文件
2.8.1 头文件用于声明而不是用于定义。
2.8.2 如果const变量不是为用常量表达是初始化,那么他就不应该在头文件中定义。