cpp 第三讲

# Lecture03 - 结构化程序设计

Data Structure + Algorithm

课程结构

  1. Data

  2. 计算、控制流转换

  3. 如何组织(function 函数的形式)

  4. 构造数据类型(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 语句使用,这样可以更方便阅读,也不用在文件中硬编码,可以存到文件当中。