操作符优先级

aardio操作符优先级与C系语言基本兼容,唯一的区别是:位运算符优先级略高于等式、不等式运算符。从而保证各组运算符的优先级更加有序、并容易记忆
试图记住所有的运算符优先级是不明智的、不要太过于依赖语言内定的优先级,在易于混淆优先级的位置应当用括号明确标明优先级、括号是免费的、它可以明确优先级、产生清晰的表达式



一、成员符、括号、乘方

操作符 优先级 结合 说明
成员符[] .
1(最高) 左向右 用于访问table成员的操作符。
() 2 左向右 用于组合表达式并改变优先级,或用于函数调用。
** 3 右向左 乘方运算


二、单目运算符

操作符 优先级 结合 说明
! 4 左向右 逻辑非
not 5 左向右 逻辑非
- 6 左向右 取负
~ 7 左向右 ~ 按位取反


三、算术运算符

操作符 优先级 结合 说明
*乘 /除 %取模 8 左向右
+加 -减 9 左向右


四、按位运算符

操作符 优先级 结合 说明
<<左移 >>右移 >>>无符号右移 10 左向右
&按位与 ^按位异或 |按位或 11 左向右 C语言中位运算符的优先级低于==、!=


五、连接运算符

操作符 优先级 结合 说明
++ 12 右向左 连接运算符


六、关系运算

操作符 优先级 结合 说明
<小于 <=小于等于 >=大于等于 >大于 13 左向右


七、逻辑运算

操作符 优先级 结合 说明
== != === !=== 14 左向右 等于、不等于、恒等、非恒等于
&& and 15 左向右 逻辑与
|| or 16 左向右 逻辑或
? 17 左向右 逻辑与、该运算符类似于and但优先级更低
: 18 左向右 逻辑或、该运算符类似于or但优先级更低


八、赋值操作

操作符 优先级 结合 说明
= += -= *= /=
&= ^= |= <<= >>=
最低优先级 由右向左 aardio中赋值操作符不能用于表达式并返回值,只能用于独立的赋值语句
除了**和++外所有的二元运算符都是左连接的.