面试题答案
一键面试-
计算顺序:
- 首先计算括号内的表达式:
4 - 1 = 3
。此时表达式变为2 + 3 * 3 / 2
。 - 然后按照运算符优先级,先进行乘法和除法运算。乘法:
3 * 3 = 9
,表达式变为2 + 9 / 2
。接着除法:9 / 2 = 4
(因为这里是整数除法,结果向下取整),表达式变为2 + 4
。 - 最后进行加法运算:
2 + 4 = 6
。
- 首先计算括号内的表达式:
-
Rust中常见运算符的优先级规则:
- 最高优先级:
- 括号:
( )
用于改变运算顺序,括号内的表达式优先计算。例如(2 + 3) * 4
会先计算2 + 3
。 - 后缀运算符:
a.b
(字段访问),a[idx]
(索引访问),a.fn()
(函数调用)等。例如在let arr = [1, 2, 3]; let num = arr[0];
中,先进行索引访问arr[0]
。
- 括号:
- 次高优先级:
- 一元运算符:
!
(逻辑非),-
(负号)等。例如let num = -5;
先对5
取负号。 - 乘法、除法和取模运算符:
*
(乘法),/
(除法),%
(取模)。它们优先级相同,按照从左到右的顺序计算,如10 / 2 * 3
,先算10 / 2 = 5
,再算5 * 3 = 15
。
- 一元运算符:
- 较低优先级:
- 加法和减法运算符:
+
(加法),-
(减法)。它们优先级相同,按照从左到右的顺序计算,如5 - 3 + 2
,先算5 - 3 = 2
,再算2 + 2 = 4
。
- 加法和减法运算符:
- 更低优先级:
- 比较运算符:
<
(小于),>
(大于),<=
(小于等于),>=
(大于等于),==
(等于),!=
(不等于)。例如let result = 5 > 3;
先进行比较运算。
- 比较运算符:
- 最低优先级:
- 逻辑运算符:
&&
(逻辑与),||
(逻辑或)。&&
和||
具有短路特性,例如true || false && false
,因为true
已经能使||
表达式为真,所以后面的false && false
不会计算。
- 逻辑运算符:
优先级从高到低总结如下:
- 括号、后缀运算符
- 一元运算符
- 乘法、除法、取模运算符
- 加法、减法运算符
- 比较运算符
- 逻辑运算符
- 最高优先级: