cpp 第三讲
# Lecture03 - 结构化程序设计
Data Structure + Algorithm
课程结构
Data
计算、控制流转换
如何组织(function 函数的形式)
构造数据类型(array,struct,union,pointer)
# Data
const int x = 1; | |
// 性质 数据类型 名 值 | |
// 地址相关 - 可以操作系统,需要接近底层 |
# datatype
# 定义值集
int double 有限 可数 离散
数据类型决定值集,决定取值范围。需要知道取值范围,从而考虑和控制 overflow 溢出的问题。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
INT_MAX = 2147483647; | |
INT_MAX + 1 = -2147483648; | |
INT_MAX + INT_MAX = -2; | |
INT_MIN = -2147483648; | |
INT_MIN - 1 = 2147483647; | |
INT_MIN + INT_MIN = 0; |
typedef short INT16
# 定义计算
算数(移位)
逻辑
I/O
cpp 类型系统 —— 强、动静结合
也有些语言会更加灵活,比如 duck 类型,
# 基本数据类型
char、int、float、double
Modifiers: long、short、signed、unsigned
char 只能用 signed、unsigned 修饰
float 不能被修饰
double 只能用 long 修饰
int 可以用 4 种修饰符组合修饰
省略表示
操作符 sizeof
ANSI C++: wchar_t、bool
# 表达式
# 组成
operand
operator
others
# 求值
- 优先级
- 结合性
- 类型转换约定
- 求值次序
# 种类
赋值表达式
算数表达式
条件运算符表达式(三目运算符)
逗号表达式
字位运算符表达式
异或运算 ^
与全 0 的二进制串的运算 —— 不变
与全 1 的二进制串的运算 —— 取反
与本身的运算 —— 清零
与同一个对象运算两次 —— 还原
// 一个小应用 —— 交换 ab | |
a = a ^ b; | |
b = b ^ a; | |
a = a ^ b; |
# 操作符可重载
# 语句
# 表达式语句
# IO 语句
stdio.h
iostream.h
cin
cout
# 控制流语句
顺序、选择、重复
switch case 中只用整型表达式 还可以搭配 enum 语句使用,这样可以更方便阅读,也不用在文件中硬编码,可以存到文件当中。