内容思维导图
![](https://img.haomeiwen.com/i26433151/26c751aa2b8b5daa.png)
内容要点
- 面向对象编程(OOP)的本质是设计并扩展自己的数据类型。设计自己的数据类型就是让类型与数据匹配。
- 内置的C++类型分为两组:基本类型和复合类型。
1. 简单变量
- 必须遵守的几种简单的C++命名规则:
- 名称中只能使用字母字符、数字和下划线(_)。
- 名称的第一个字符不能是数字。
- 区分大写字符和小写字符。
- 不能将C++关键字用作名称。
- 以两个下划线或下划线和大写字母大头的名称被保留给实现(编译器及其使用资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。
- C++对于名称没有长度限制,名称中所有字符都有意义。
- ANSI C(C99标准)只保证名称中前63个字符有意义。
- 常用变量名方案——前缀
- 前缀n表示整数值
- 前缀str或sz表示以空字符结束的字符串
- 前缀b表示布尔值
- 前缀p表示指针
- 前缀c表示单个字符
- 术语宽度(width)用于描述存储整数时使用的内存量。
- C++整型的一些标准
-
short
至少16位
-
-
int
至少与short
一样长
-
-
long
至少32位,且至少与int
一样长
-
- 计算机内存的基本单元是位(bit)。字节(byte)通常指的是8位的内存单元。不过C++对字节的定义与此不同,C++字节由至少能够容纳实现的基本字符集的相邻单位组成,也就是说,可能取值的数目必须等于或超过字符数目。
- 确定系统中整数的最大长度:
- 使用
sizeof
操作符,返回类型或变量的长度,单位为字节。
- 使用
- 头文件
climits
中包含关于整型限制的信息,其中CHAR_BIT
为字节的位数。
- 头文件
- 对类型名(如
int
)使用sizeof
操作符时,应将名称放在括号中;但对变量名(如n_short
)使用该操作符,括号是可选的。 -
climits
中的符号常量
符号常量 | 表示 |
---|---|
CHAR_BIT | char的位数 |
CHAR_MAX | char的最大值 |
CHAR_MIN | char的最小值 |
SCHAR_MAX | signed char的最大值 |
SCHAR_MIN | signed char的最小值 |
UCHAR_MAX | unsigned char的最大值 |
SHRT_MAX | short的最大值 |
SHRT_MIN | short的最小值 |
USHRT_MAX | unsigned short的最大值 |
INT_MAX | int的最大值 |
INT_MIN | int的最小值 |
UINT_MAX | unsigned int的最大值 |
LONG_MAX | long的最大值 |
LONG_MIN | long的最小值 |
ULONG_MAX | unsigned long的最大值 |
-
#define
编译指令
// 该指令告诉预处理器,在程序中查找INT_MAX,并将所有的INT_MAX都替换为32767
#define INT_MAX 32767
- 自然长度(natural size)指的是计算机处理起来效率最高的长度。
- C++确定常量的类型
- 后缀l或L表示
long
- 后缀l或L表示
- 后缀u或U表示
unsigned int
- 后缀u或U表示
- C++的计数方式
// 十进制
int chest = 42;
// 十六进制
int waist = 0x42;
// 八进制
int inseam = 042;
- C++转义序列编码
字符名称 | ASCII符号 | C++代码 | 十进制ASCII码 | 十六进制ASCII码 |
---|---|---|---|---|
换行符 | NL(LF) | \n | 10 | 0xA |
水平制表符 | HT | \t | 9 | 0x9 |
垂直制表符 | VT | \v | 11 | 0xB |
退格 | BS | \b | 8 | 0x8 |
回车 | CR | \r | 13 | 0xD |
振铃 | BEL | \a | 7 | 0x7 |
反斜杠 | \ | \\ | 92 | 0x5C |
问号 | ? | ? | 63 | 0x3F |
单引号 | ' | ' | 39 | 0x27 |
双引号 | " | " | 34 | 0x22 |
2. const限定符
-
const
相对于#define
的优点:- 能够明确指定类型
- 可使用C++的作用域规则将定义限制在特定的函数或文件中
- 可将
const
用于更复杂的类型
- 可将
3. 浮点数
-
计算机将浮点数的值分为两部分存储(34.1245)
- 基准值(0.341245)
- 缩放因子(100)
-
C++两种浮点数的书写方式
- 常用的标准小数点表示法
- E表示法,可以使用e或E,指数也可以是正数或负数
// 小数点表示法
double a = 12.34;
double b = 0.00023;
// E表示法
double m = 2.52e+8;
double n = 8.33E-4;
double o = 7E5;
double p = -18.32e13;
-
记住:
d.dddE+n
指的是小数点右移n位,而d.dddE-n
指的是小数点左移n位。 - C++有3种浮点类型,
float, double
和long double
,这些类型是按它们可表示的有效位数和允许的指数最小范围来描述的。有效位(significant figure)是数字中有意义的位。 - 浮点常量
- 默认为
double
- 默认为
-
float
类型使用f或F后缀
-
-
long double
类型使用l或L后缀
-
4. C++算数操作符
- 求模操作符
%
用于浮点数将导致编译器错误。 - 对于
float
,C++只保证6位有效位。
// 下面test输出到控制台为61.42,因为C++只保证6位有效位,test被四舍五入
float test = 61.419998;
std::cout << test;
-
对不同类型进行运算时,C++将把它们全部转换为同一类型。
-
C++自动执行的类型转换
- 将一种算术类型的值赋给另一种算术类型的变量时
- 表达式中包含不同的类型时
- 将参数传递给函数时
-
潜在的数值转换问题
转换 | 潜在问题 |
---|---|
较大浮点型转换为较小浮点型 | 精度(有效位)降低,值可能超出目标类型的取值范围,结果不确定 |
浮点型转换为整型 | 小数部分丢失,值可能超出目标类型的取值范围,结果不确定 |
较大整型转换为较小整型 | 值可能超出目标类型的取值范围,通常只复制右边的字节 |
- 强制类型转换的通用格式:
(typename) value // C style
typename (value) // C++ style
- 强制类型转换操作符
static_cast<>
可用于将值从一种数值类型转换为另一种数值类型。使用格式如下:
static_cast<typename> (value) // converts value to typename type
网友评论