差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| wiki:reference:grammar:expression:main_page [2021/06/15 16:32] – [3.3.3 特殊运算符] rend | wiki:reference:grammar:expression:main_page [2021/06/16 10:57] (当前版本) – [3.6 Lambda 表达式] rend | ||
|---|---|---|---|
| 行 7: | 行 7: | ||
| **表达式**由操作数和运算符组成 | **表达式**由操作数和运算符组成 | ||
| - | //操作数 运算符 操作数// | + | '' |
| 一般,含左右两个操作数的运算符是**二元运算符** | 一般,含左右两个操作数的运算符是**二元运算符** | ||
| 行 13: | 行 13: | ||
| 含一个操作数的运算符是**一元运算符** | 含一个操作数的运算符是**一元运算符** | ||
| - | 二元运算符有结合律,左结合顺序为从右向左,右结合顺序为从左向右 | + | 二元运算符有**结合律**,有左右结合之分 |
| - | 所有的运算符都有优先级,优先级越高越先计算 | + | 所有的运算符都有优先级,**优先级越高越先计算** |
| < | < | ||
| <div style=" | <div style=" | ||
| - | **注意,对于递增、递减、赋值等会修改操作数的运算符,要求表达式的计算结果可被修改,不能是表达式计算中产生的中间临时量或常量** | + | 注意:对于递增、递减、赋值等会修改操作数的运算符,要求表达式的计算结果可被修改,不能是表达式计算中产生的中间临时量或常量 |
| </ | </ | ||
| </ | </ | ||
| 行 42: | 行 42: | ||
| ==== 3.2.1 new 表达式 ==== | ==== 3.2.1 new 表达式 ==== | ||
| - | < | + | < |
| new 表达式 | new 表达式 | ||
| </ | </ | ||
| 行 50: | 行 50: | ||
| 表达式的计算结果需要是一种类型 | 表达式的计算结果需要是一种类型 | ||
| - | 此对象将会遵从'' | + | 此对象将会遵从**RAII 原则**自动回收 |
| ==== 3.2.2 gcnew 表达式 ==== | ==== 3.2.2 gcnew 表达式 ==== | ||
| - | < | + | < |
| gcnew 表达式 | gcnew 表达式 | ||
| </ | </ | ||
| 行 62: | 行 62: | ||
| 表达式的计算结果需要是一种类型 | 表达式的计算结果需要是一种类型 | ||
| - | 此对象将会由垃圾回收器自动回收 | + | 此对象将会由**垃圾回收器**自动回收 |
| ===== 3.3 二元运算符 ===== | ===== 3.3 二元运算符 ===== | ||
| 行 84: | 行 84: | ||
| | // | | // | ||
| | // | | // | ||
| - | | // | + | | // |
| | // | | // | ||
| ==== 3.3.2 左结合运算符 ==== | ==== 3.3.2 左结合运算符 ==== | ||
| 行 96: | 行 96: | ||
| | // | | // | ||
| | // | | // | ||
| - | === 3.3.2.1 绑定 === | + | === 3.3.2.1 绑定 === |
| - | //待绑定对象// **:=** //表达式// | + | <code java> |
| 在这里,待绑定对象必须是**右值**,具体来说就是: | 在这里,待绑定对象必须是**右值**,具体来说就是: | ||
| - | 1. 变量 | + | - 变量 |
| - | + | | |
| - | 2. 容器中的元素 | + | \\ |
| == 变量的演变 == | == 变量的演变 == | ||
| - | < | + | < |
| # 绑定至变量 | # 绑定至变量 | ||
| a := b | a := b | ||
| 行 114: | 行 114: | ||
| c := arr[0] | c := arr[0] | ||
| </ | </ | ||
| + | \\ | ||
| == 引用的退化 == | == 引用的退化 == | ||
| - | < | + | < |
| - | # 绑定至自身的克隆 | + | a := clone(a) |
| - | a := clone(a) | + | a := new array # 绑定至新内存区块 |
| - | # 绑定至新内存区块 | + | |
| - | a := new array | + | |
| </ | </ | ||
| + | \\ | ||
| + | |||
| ==== 3.3.3 特殊运算符 ==== | ==== 3.3.3 特殊运算符 ==== | ||
| 行 135: | 行 136: | ||
| 逗号表达式将遵循从左到右的规则,其值为最后一个表达式的值 | 逗号表达式将遵循从左到右的规则,其值为最后一个表达式的值 | ||
| - | 数组在访问时,若下标越界会自动增长,增长的部分填'' | + | 数组在访问时,若下标越界会自动增长,增长的部分填'' |
| 展开表达式的使用范围**仅限**函数调用时的参数列表和数组字面量的声明中 | 展开表达式的使用范围**仅限**函数调用时的参数列表和数组字面量的声明中 | ||
| 行 190: | 行 191: | ||
| \\ | \\ | ||
| - | ===== 3.6 Lambda | + | ===== 3.6 lambda |
| - | **定义一个Lambda | + | **定义一个lambda |
| <code c++> | <code c++> | ||
| 行 200: | 行 201: | ||
| 参数列表中的参数只能指定名称,参数名不可重复,各参数之间以逗号分隔 | 参数列表中的参数只能指定名称,参数名不可重复,各参数之间以逗号分隔 | ||
| - | '' | + | **lambda** |
| - | 编译器会为 | + | 编译器会为 |
| - | '' | + | **lambda** |