0x 考试内容要求
- 掌握C++的数据类型
- 解常量定义
- 掌握常量的用法
- 掌握运算符种类以及其优先级和结合性
- 熟练掌握表达式
1x C++语言的数据类型
C++中每个变量或者常量都需要拥有自己的一种数据类型
C++将数据类型分为三种:
- 基本数据类型
- 构造类型(导出数据类型)
- 自定义类型
1x.1 基本类型
- 逻辑型——
bool
- BOOL布尔型,用0,1来表示逻辑真假
- 只拥有个值:
true
、false
分别用1、0表示
- 字符型——
char
- 取值范围:ASCII,扩充ASCII
- 占用一个字节,即8位
- ASCII中的字符和整数具有对应关系
- 取值范围:0~255
- 整型——
int
- 16位机,占2个字节;32位机占4个字节
- 取值范围为:-32768~32767
- 浮点型——
float
、double
- 单精度浮点型(
float
)占4个字节; - 双精度浮点型(
double
)占8个字节;
- 单精度浮点型(
- 空类型——
void
- 表示取值为空
void *p
表示指向类型不明确
1x.1.1 基本类型的派生类型
- 基本类型的派生类型是指——基本类型的字长及其取值范围可以放大和缩小,改变后的类型
- 派生类生命符由基本类型关键字面前加上修饰符组成
short
——缩短字长long
——加长字长signed
——有符号类型,取值类型包括正负值unsigned
——无符号类型,取值范围只包括正值
Tip:该规则并不可以应用于全部基本类型具体请参照下表,图片来源:见水印
1x.1.2 常量
常量是指在程序执行过程中值不改变的量。
有两种表示形式:字面常量和符号常量。
字面常量
- 逻辑常量
- 有两个值:
True
、False
- 分别用1、0表示
- 可以参与算数运算
- 有两个值:
- 字符常量
- 简称字符:以单引号作为起止符号
- ASCII是字符范围落在字符型类型的范围内,所以也是字符常量(个别字符除外)
- 转义字符:用反斜杠“
\
”引导的下一个字符,失去了原来的含义,而转义成了别的意义 - 允许反斜杠一道一个具有1至3位的八进制数或以x开始标记的1至2位十六进制
- 整型常量
- 十进制整数:整数和负数-231~231-1
- 八进制整数:以数字
0
开头,全部默认为正数 - 十六进制整数:以数字0和字母
x
或X
开头 - 整型数表示允许后面添加后缀
u
或U
来表示无符号和l
或L
来表示长整型
- 实型常量
- 定点表示:用小数形式表示实数,小数点可以出在任何一个数字为的前面或者后面
甚至.01
-.012
都是合法的 - 浮点表示:以指数形式表示
- 由一个十进制整数后接一个字母
E
或e
和一个1~3位的十进制整数组成,E
/e
前面的称为尾数,E
/e
后面的称为指数。 - 该浮点数的值等于尾数乘以是的指数幂
- 由一个十进制整数后接一个字母
- 定点表示:用小数形式表示实数,小数点可以出在任何一个数字为的前面或者后面
- 枚举常量
- 枚举属于用户定义类型,用
enum
表示 - 用来定义程序中的需要使用的一组相关符号常量
- 声明枚举类型的语法格式
enum <类型名>{<枚举值1>,<枚举值2>...}; //这里的枚举具有顺序性
- 说明
- 一个枚举类型是
int
类型的一个子集,每一个枚举值代表着一个整数(默认从0开始,依次加一以表示枚举值的顺序性) - 若第i个枚举值常量值为
m
,则后续的枚举值分别与m+1
m+2
对应向前对应为m-1
- 一个枚举类型是
- 枚举属于用户定义类型,用
符号常量
- 由用户定义,定义方法有两种,一种为预编译器的
#defined
或使用conts
关键字。
1x.1.3 变量
- 变量是程序中用于存储信息的单元,它对应于内存中的某段存储空间。
- 定义变量需要说明变量的数据类型和名字
- 数据类型说明为变量分配多少的内存空间
- 变量名可以代表存储空间,因此程序能在变量中存储值和取出值
- 变量的定义
- 定义的格式:
储存类 变量类型 变量名=初始化值/初始表达式;- 默认储存内类为
auto
- 若未赋初值,则变量的值不确定
- 可以定义多个变量,各个变量之间用逗号运算符
,
分开
- 默认储存内类为
- 变量名的命名规则:
- 必须是一个合法的C++标识符
- 不能使用C++关键字
- 定义的格式:
- 变量的使用方法
- 全局变量和局部变量
- 全局变量——在所有函数定义、类定义和程序块之外声明的变量
- 若没有初始化,系统会自动为其赋值为0
(这里就和局部变量的自动初始化区别开来) - 在程序的任何一个函数、类或者程序块之外都能访问全局变量
- 局部变量——在某个函数定义、类定义和程序块之类声明的变量
- 局部变量只能在声明它的局部范围内被访问
- 生存期和作用域
- 生存期——指从一个变量被声明且分配内存开始,直到该变量声明语句失效,它占用的内存空间被释放为止
- 全局变量——从声明开始,知道程序结束为止
- 局部变量——从声明开始,到包含它的最近的一个程序块结束为止
- 作用域——指变量名可以代表该变量储存空间的范围
- 一般来说,变量的作用域与其声明周期是一致的
可以使用动态分配空间的方法来控制变量的声明周期
- 生存期——指从一个变量被声明且分配内存开始,直到该变量声明语句失效,它占用的内存空间被释放为止
- 变量的存储类属性
C++根据存储方式的不同将存储类别划分为4类:auto
变量——自动变量,为变量声明时的默认储存类别register
变量——寄存器变量,建议编译器以寄存器作为存储空间static
变量——静态变量,声明周期延续到程序的总之,默认赋初始值为0;extern
变量——外部变量,通常用于多个文件组成的程序中,多个文件同时被声明指向同一个变量。
typedef
类型说明
使用关键字typedef可以为已有类型名定义一个新类型名,为了提高代码的可读性。
其格式为:typedef [已有类型名] [新类型名]
- 符号常量声明语句
- 声明语句格式:
const [类型名] [符号常量名] = 初值表达式
- 必须在声明符号常量的同事为其赋初值
- 符号常量的值为常量,以后这个值始终保持不变。不能再次赋值
- 若类型名为
int
则可以省略类型名 - 适当使用可以提高的程序的可读性和可维护性
- 全局变量和局部变量