开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:运算符优先级】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9549
运算符优先级
目录
一、 运算符优先级
二、 运算符优先级的分类整理
本节课介绍运算符优先级问题。
一、运算符优先级
当表达式中存在多数运算符时,则谁先执行,后执行的问题既存在。
1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行。从上到下,优先级逐渐降低。
2. 只有单目运算符、赋值运算符是从右向左运算的。其他为从左到右。
赋值运算符:假设 a=n1+n2,则从右到左进行
单目运算:针对一个数,一个变量进行
例如:+,-,对其进行求正数,求负数;或者进行数据类型的转换,或者取地址符,或者取指针的变量,运算也是从右到左进行。
3. 大致的顺序整理。
运算符优先级一览表:
分类 |
描述 |
关联性 |
后缀 |
()【】->++-- |
左到右 |
单目 |
+-!~(type)*&sizeof |
右到左 |
乘法 |
*/% |
左到右 |
加法 |
+- |
左到右 |
移位 |
<<>> |
左到右 |
关系 |
<<=>>= |
左到右 |
相等(关系) |
==!= |
左到右 |
按位AND |
& |
左到右 |
按位XOR |
^ |
左到右 |
按位OR |
| |
左到右 |
逻辑AND |
&& |
左到右 |
逻辑AND |
|| | |
左到右 |
赋值运算符 |
=+=- =*=/=%=>>=<<=&= ^=|= |
右到左 |
逗号 |
, |
左到右 |
表格中由上到下,由高到低。
二、运算符优先级的分类整理
1. 括号,++,--
后缀 |
()【】->++-- |
2. 单目运算符
对一个值进行运算,例取地址;对一个指针的变量取值。
单目 |
+-!~(type)*&sizeof |
3. 算术运算符
乘法 |
*/% |
加法 |
+- |
4. 移位运算
移位 |
<<>> |
5. 关系算符
关系 |
<<=>>= |
相等(关系) |
==!= |
6. 位运算符
按位AND |
& |
按位XOR |
^ |
按位OR |
| |
7. 逻辑运算符
逻辑AND |
&& |
逻辑OR |
|| | |
8. 赋值运算符
赋值运算符 |
=+=-=*=/=%=>>=<<=&=^=|= |
9. 逗号
逗号 |
, |
若想更好记忆,可按照习惯编为一个口诀。
括;单;算;移;关系;位移;逻辑;赋值;逗号。
本节课运算符优先级就讲解到这里。