1、for 循环
- for(initialization; test-expression; updata-expression)
- test-expression 关系表达式,结果强制为bool类型,true or false。
表达式和语句
- C++表达式是 值 或 值与运算符的组合,每个表达式都有值。
- 表达式只要加上分号,就是语句
递增运算符和递减运算符
- ++x; 前缀,先将x值加一,再用新值计算表达式
- x++; 后缀,先用当前值计算表达式,再将x加一
- 前缀:将值加一,返回结果
- 后缀:先复制副本,将其加一,返回副本
- 前缀效率更高
优先级
- 前缀递增/减、* 优先级相同,从右到左结合
- 后缀递增/减优先级相同,比前缀优先级高,从右到左结合
// 前缀,从右到左结合
*++pt; // 先将pt递增后移,再取后移指针对应的值
++*pt; // 先取pt指向的值,再将这个值加一// 后缀优先级更高
(*pt)++; // 先取pt指向的值,再将这个值加一
*pt++; // 后缀优先级更高,pt先加一,然后取值
复合语句
- 语句块中的变量,在语句块执行完后被释放。
- 外部声明变量,语句块声明同名变量,将在语句快内覆盖外部变量,结束语句块后,外部变量再次可见。
C风格字符串比较
word == "mate"; // 相同字符,不同地址。结果为false
- 数组名是数组的地址,字符串常量也是地址
- 不能比较字符串,可以比较字符,因为字符实际上是整型。
- string类可以使用 word != "mate" ;要求两变量至少一个为string对象。
strcmp() 函数
- 接收两个字符串地址为参数,指针、字符串常量、字符数组名。
- 两字符串相同,返回0
- 两字符串不同,按字符系统编码比较结果返回不同值。
- ASCII码,大写字母比小写字母小。
- 第一个字符串字符顺序在前,返回负数
- 第一个字符串字符顺序灾后,返回正数
2、while 循环
编写延时
- 缺点要修改计数限制
#include <ctime>cin >> secs;
clock_t delay = secs * CLOCK_PER_SEC;
clock_t start = clock();while (clock() - start < delay) {;
}
- 符号常量 CLOCKS_PER_SEC 表示每秒钟包含的系统时间个数
- clock() 函数返回程序开始执行后所用的系统时间
- clock_t 类型,编译器将转换为long、unsigned int等适合系统的类型
- 该程序以系统时间为单位计算时延
类型别名
- 问题
3、do while 循环
4、基于范围的for循环
5、循环和文本输入
cin
- 发送给cin的输入被缓存,在回车后发送给程序。
- cin忽略空格和换行符
cin.get(ch)
- 读取输入的下一个字符,包括空格
cin.get(name, ArSize)
- 函数重载的OOP特性:同名函数,参数列表不同
文件尾条件
- 文件尾(EOF)
- C++模拟UNIX,将Ctrl+D视为仿真的EOF
- Windows使用Ctrl+Z
- cin检测到EOF,将不再读取,即使再次调用
- 使用cin.clear(); 重置输入流
6、嵌套循环和二维数组
- 二维数组声明 [行][列] :4个数组元素,每个元素包括5个值
初始化
// 一维数组
int btus[4] = { 23, 11, 35, 35};//二维数组
int maxtemps[4][5] =
{{1, 2, 3, 4, 5};{};{};{};
};// maxtemps[0] 是 {1, 2, 3, 4, 5};
// maxtemps[0][0] 是 1