-
概述
- 赋值语句返回值
- 运算符优先级, 结合性
- 基础复习...
-
背景
-
复习算法
- 邓俊辉老师的视频
- c++ 的语法
-
在写 冒泡排序 的时候, 出现了一个骚操作
- 大概是把 一个赋值语句, 放到了 for 循环的 条件判断 的位置
-
这个骚操作, 忽然让我这个基础不好的学渣, 一下陷入了迷茫
- 卧槽, 这赋值语句也能当条件用?
-
-
环境
- 略
- 这块和环境, 真的没啥关系
- 略
-
类型
- 总结类
1. 问题: 赋值语句 作为 for 循环条件
-
概述
- 问题
-
场景
-
算法公开课
- p25
-
代码
void bubblesort(int A[], int n) { for (bool sorted = false; sorted = !sorted; n--) { for (int i = 1; i < n; i++) { if (A[i-1] > A[i]) { swap(A[i-1],A[i]); } } } }
-
-
问题: sorted = !sorted
- 问题
- rt
- 通常 for 循环里, 应该都是 返回 bool/boolean 类型的语句
- 问题
2. 结论: C++ 赋值语句, 可以返回赋值的结果
-
概述
- 略
-
例子
int a = 0 # 这个式子, 返回值就是 1 a = 1;
-
问题
- Java 也是这样的吗?
3. 结论: Java 也是这样的
-
概述
- 略
-
问题: 这个式子, 如何理解?
-
rt
a = b = 1
-
解答
- 先算 b = 1
- 这个式子的 返回值 是 1
- 让后将 1 赋值给 a
-
-
问题: 凭什么先算 b = 1
- 问题
- rt
- 虽然逻辑上 行不通, 可是为什么不是先算 a = b?
- 问题
4. 运算符的优先级与结合性
-
概述
- 优先级
- 结合性
- 基础复习...
-
优先级
-
概述
- 多个运算符同时在场时, 计算的顺序
-
场景
- 一个式子
- 有多个运算符
-
思路
- 从左到右扫描
- 先算优先级高的
- 再算优先级低的
- 同级 从左到右, 依次计算
-
-
结合性
-
概述
- 运算符自身的顺序
-
结合性
- 左结合
- 先算左边
- 右结合
- 先算右边
- 左结合
-
例子
# 左结合 ## 1. 先算左边, 再算右边 a + b # 右结合 ## 2. 先算右边, 再算左边 a = b
-
-
结论
- 计算时, 需要先考虑优先级, 再考虑结合性
-
建议
- 不建议在一个式子里, 使用过多的运算符
- 如果一定要用, 建议用 括号隔开, 明确优先级
ps
- ref
-
- 概述
- C++
- 概述
-
- 概述
- Java
- 概述
-
- 概述
- C/C++/Java 运算符的 优先级 和 结合性
- 概述
-