《C++ Primer Plus》第3章学习笔记

内容思维导图

第3章 处理数据思维导图

内容要点

  • 面向对象编程(OOP)的本质是设计并扩展自己的数据类型。设计自己的数据类型就是让类型与数据匹配
  • 内置的C++类型分为两组:基本类型和复合类型。

1. 简单变量

  • 必须遵守的几种简单的C++命名规则:
      1. 名称中只能使用字母字符、数字和下划线(_)。
      1. 名称的第一个字符不能是数字。
      1. 区分大写字符和小写字符。
      1. 不能将C++关键字用作名称。
      1. 以两个下划线或下划线和大写字母大头的名称被保留给实现(编译器及其使用资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。
      1. C++对于名称没有长度限制,名称中所有字符都有意义。
  • ANSI C(C99标准)只保证名称中前63个字符有意义。
  • 常用变量名方案——前缀
      1. 前缀n表示整数值
      1. 前缀str或sz表示以空字符结束的字符串
      1. 前缀b表示布尔值
      1. 前缀p表示指针
      1. 前缀c表示单个字符
  • 术语宽度(width)用于描述存储整数时使用的内存量。
  • C++整型的一些标准
      1. short至少16位
      1. int至少与short一样长
      1. long至少32位,且至少与int一样长
  • 计算机内存的基本单元是位(bit)字节(byte)通常指的是8位的内存单元。不过C++对字节的定义与此不同,C++字节由至少能够容纳实现的基本字符集的相邻单位组成,也就是说,可能取值的数目必须等于或超过字符数目。
  • 确定系统中整数的最大长度:
      1. 使用sizeof操作符,返回类型或变量的长度,单位为字节。
      1. 头文件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++确定常量的类型
      1. 后缀l或L表示long
      1. 后缀u或U表示unsigned int
  • 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的优点:
      1. 能够明确指定类型
      1. 可使用C++的作用域规则将定义限制在特定的函数或文件中
      1. 可将const用于更复杂的类型

3. 浮点数

  • 计算机将浮点数的值分为两部分存储(34.1245)

      1. 基准值(0.341245)
      1. 缩放因子(100)
  • C++两种浮点数的书写方式

      1. 常用的标准小数点表示法
      1. 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, doublelong double,这些类型是按它们可表示的有效位数和允许的指数最小范围来描述的。有效位(significant figure)是数字中有意义的位。
  • 浮点常量
      1. 默认为double
      1. float类型使用f或F后缀
      1. long double类型使用l或L后缀

4. C++算数操作符

  • 求模操作符%用于浮点数将导致编译器错误。
  • 对于float,C++只保证6位有效位。
// 下面test输出到控制台为61.42,因为C++只保证6位有效位,test被四舍五入
float test = 61.419998;
std::cout << test;
  • 对不同类型进行运算时,C++将把它们全部转换为同一类型。

  • C++自动执行的类型转换

      1. 将一种算术类型的值赋给另一种算术类型的变量时
      1. 表达式中包含不同的类型时
      1. 将参数传递给函数时
  • 潜在的数值转换问题

转换 潜在问题
较大浮点型转换为较小浮点型 精度(有效位)降低,值可能超出目标类型的取值范围,结果不确定
浮点型转换为整型 小数部分丢失,值可能超出目标类型的取值范围,结果不确定
较大整型转换为较小整型 值可能超出目标类型的取值范围,通常只复制右边的字节
  • 强制类型转换的通用格式:
(typename) value    // C style
typename (value)    // C++ style
  • 强制类型转换操作符static_cast<>可用于将值从一种数值类型转换为另一种数值类型。使用格式如下:
static_cast (value)   // converts value to typename type

你可能感兴趣的:(《C++ Primer Plus》第3章学习笔记)