ZHCU947E June 2015 – January 2023
数学或逻辑运算符的操作数必须是正确定义的表达式。也就是说,必须使用正确数量的操作数,而且运算必须有意义。例如,不能对浮点值进行 XOR 运算。此外,正确定义的表达式仅包含符号或汇编时常量,它们已提前定义,然后才能出现在指令的表达式中。
三个主要因素会影响表达式求值顺序:
圆括号 | 总是首先计算圆括号中的表达式。 8 / (4 / 2) = 4,但 8 / 4 / 2 = 1 不能 用大括号 ( { } ) 或方括号 ( [ ] ) 代替圆括号。 |
优先级组 | #GUID-409CAE49-CB51-43E0-9A23-B9ED40A6CB54/STDZ0711092 中列出的运算符分为九个优先级组。当圆括号不能确定表达式求值顺序时,首先计算优先级最高的运算。 8 + 4 / 2 = 10(首先计算 4 / 2) |
从左到右求值 | 当圆括号和优先级组不能确定表达式求值顺序时,表达式从左到右求值,但第 1 组是从右到左求值。 8 / 4*2 = 4,但 8 / (4*2) = 1 |
#GUID-409CAE49-CB51-43E0-9A23-B9ED40A6CB54/STDZ0711092 根据优先级组列出了可在表达式中使用的运算符。
组(1) | 运算符 | 描述(2) |
---|---|---|
1 | + - ~ ! | 一元加 一元减 一的补码 逻辑非 |
2 | * / % | 乘法 除法 模数 |
3 | + - | 加法 减法 |
4 | << >> | 左移 右移 |
5 | < <= > >= | 小于 小于或等于 大于 大于或等于 |
6 | =[=] != | 等于 不等于 |
7 | 且 | 按位与 |
8 | ^ | 按位异或 (XOR) |
9 | | | 按位或 |
在汇编期间执行算术运算时,汇编器会检查是否有上溢和下溢情况。每当发生上溢或下溢时,汇编器都会发出警告(“value truncated”消息)。汇编器不 检查乘法中的上溢或下溢。