循环和关系表达式
for循环
- 为执行重复的操作提供了循序渐进的步骤
for (int i=0 ; i<5 ; i++)
// 初始化 判断条件 每轮结束时都执行一遍
- 基于范围的for循环
double arr[5] = {12.21, 23.32, 34.34, 454.45, 56.56}
for (double x: arr)
{
cout << x << endl;
}
-
递增运算符(++)和递减运算符(–)
- 自加(减)1
- 可放在操作数前或后
int i = 1;
cout << i++ << " " << i << endl;
cout << ++i << " " << i << endl;
-
递增/减运算符与指针
- *与前缀运算符的优先级相同,所以前缀运算符与’*的运算从右往左结合
- 后缀运算符的优先级比前缀运算符与*的优先级都要高,所以先执行++的操作
int arr[5] = {1, 10, 100, 1000, 10000};
int*pt = arr;
cout << *pt<< endl;
cout << *pt++ << " " << *pt<< endl;
cout << *++pt << " " << *pt << endl;
cout << ++*pt << " " << *pt << endl;
- 组合赋值运算符
操作符 | 作用 |
---|---|
L+=R | 将L+R赋值给L |
L-=R | 将L-R赋值给L |
L*=R | 将L*R赋值给L |
L/=R | 将L/R赋值给L |
L%=R | 将L%R赋值给L |
- 复合语句
- 两个花括号构造一条复合语句,里面可以包含多条语句
逗号表达式 - 同样允许两个表达式放到c++句法只允许放一个表达式的地方
关系表达式 - 关系运算符优先级比算术运算符低
- 关系运算符返回值0或1
- 两个花括号构造一条复合语句,里面可以包含多条语句
- c-风格字符串比较
- strcmp()比较两个字符串是否相等,相等返回0,否则返回值大于0
- string类字符串比较,使用关系运算符!=,不相等返回0,相等返回1
while循环
- 没有初始化和更新部分的for,表达式的结果为True,则执行循环体中的语句
- 循环原则:
- 指定循环终止条件
- 首次循环之前要初始化条件
- 每次循环都必须刷新更新条件
do while循环
- 先执行循环体,然后再判断测试表达式(至少执行一次循环语句的内容)
- 条件为False结束循环
类型别名
- 使用预处理,用char来替换所有的BYTE
#define BYTE char
- 通过关键字typeof创建别名,
typeof char type
循环和文本输入
- cin在读取char的时候,会忽略空格和换行符
cin.get(ch)/ch=cin.get(),读取输入中的下一个字符,并赋值给ch这个变量,可用于逐个检查输入的字符
cin.get(ch) | ch=cin.get() | |
---|---|---|
传递输入字符的方式 | 赋值给ch | 将函数返回值赋给ch |
用于字符输入时函数的返回值 | istream对象 | int类型的字符编码 |
到达EOF时函数的返回值 | istream对象 | EOF |
- 文件尾条件,检测文件尾(EOF),来检测cin输入结束,即使再次调用cin也不会读取输入,需要cin.clear()清楚EOF标记来恢复输入