二元表达式(Binary Expressions)
二元表达式由 "左边参数" + "二元运算符" + "右边参数" 组成, 它有如下的形式:
left-hand argument
operator
right-hand argument
Swift 标准库提供了如下的二元运算符:
-
求幂相关(无结合,优先级160)
- << 按位左移(Bitwise left shift)
-
按位右移(Bitwise right shift)
-
乘除法相关(左结合,优先级150)
- * 乘
- / 除
- % 求余
- &* 乘法,忽略溢出( Multiply, ignoring overflow)
- &/ 除法,忽略溢出(Divide, ignoring overflow)
- &% 求余, 忽略溢出( Remainder, ignoring overflow)
- & 位与( Bitwise AND)
-
加减法相关(左结合, 优先级140)
- + 加
- - 减
- &+ Add with overflow
- &- Subtract with overflow
- | 按位或(Bitwise OR )
- ^ 按位异或(Bitwise XOR)
-
Range (无结合,优先级 135)
- .. 半闭值域 Half-closed range
- ... 全闭值域 Closed range
-
类型转换 (无结合,优先级 132)
- is 类型检查( type check)
- as 类型转换( type cast)
-
Comparative (无结合,优先级 130)
- < 小于
- <= 小于等于
-
大于
-
= 大于等于
- == 等于
- != 不等
- === 恒等于
- !== 不恒等
- ~= 模式匹配( Pattern match)
-
合取( Conjunctive) (左结合,优先级 120)
- && 逻辑与(Logical AND)
-
析取(Disjunctive) (左结合,优先级 110)
- || 逻辑或( Logical OR)
-
三元条件(Ternary Conditional )(右结合,优先级 100)
- ?: 三元条件 Ternary conditional
-
赋值 (Assignment) (右结合, 优先级 90)
- = 赋值(Assign)
- *= Multiply and assign
- /= Divide and assign
- %= Remainder and assign
- += Add and assign
- -= Subtract and assign
- <<= Left bit shift and assign
-
= Right bit shift and assign
- &= Bitwise AND and assign
- ^= Bitwise XOR and assign
- |= Bitwise OR and assign
- &&= Logical AND and assign
- ||= Logical OR and assign
关于这些运算符(operators)的更多信息,请参见:Basic Operators and Advanced Operators.
注意
在解析时, 一个二元表达式表示为一个一级数组(a flat list), 这个数组(List)根据运算符的先后顺序,被转换成了一个tree. 例如: 2 + 3 5 首先被认为是: 2, + ,3
, , 5. 随后它被转换成 tree (2 + (3 * 5))
二元表达式语法
二元表达式 → 二元运算符 前置表达式
二元表达式 → 赋值运算符 前置表达式
二元表达式 → 条件运算符 前置表达式
二元表达式 → 类型转换运算符
二元表达式列表 → 二元表达式 二元表达式列表 可选
易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
- Java技术群: 227270512 (人数:2000,免费:否)
- Go开发者群(新): 851549018 (人数:1000,免费)
- PHP开发者群: 460153241 (人数:2000,免费)
- MySQL/SQL群: 418407075 (人数:2000,免费:否)
- 大数据开发群: 655154550 (人数:2000,免费:否)
- Python技术群: 287904175 (人数:2000,免费:否)
- 人工智能深度学习: 456236082 (人数:2000,免费:否)
- 测试工程师群: 415553199 (人数:2000,免费:否)
- 前端开发者群: 410430016 (人数:2000,免费:否)
- C/C++技术群(新): 629264796 (人数:2000,免费)
- Node.js技术群(新): 621549808 (人数:2000,免费)
- PostgreSQL数据库群: 539504187 (人数:1000,免费)
- Linux运维技术群: 479429477 (人数:2000,免费:否)
- Oracle数据库: 175248146 (人数:2000,免费:否)
- C#/ASP.Net开发者: 579821706 (人数:2000,免费)
- 数据分析师群: 397883996 (人数:2000,免费:否)