您现在的位置是:首页 >技术杂谈 >Rust教程-2.2 操作符和表达式网站首页技术杂谈
Rust教程-2.2 操作符和表达式
2.2 操作符和表达式
在 Rust 中,操作符和表达式是构建逻辑、执行计算的基础。这一节将详细介绍 Rust 支持的各种操作符,包括算术操作符、比较操作符以及逻辑操作符等,并展示如何使用它们。
2.2.1 算术操作符
Rust 支持常见的算术运算,如加法、减法、乘法、除法和取余。这些操作符可以直接应用于数字类型。
-
加法 (
+
):两个数值相加。let sum = 5 + 10;
-
减法 (
-
):从一个数中减去另一个数。let difference = 95 - 5;
-
乘法 (
*
):两个数值相乘。let product = 4 * 30;
-
除法 (
/
):一个数除以另一个数。对于整数除法,结果会向下取整。let quotient = 56 / 32; // 结果为 1
-
取余 (
%
):返回两数相除后的余数。let remainder = 43 % 5; // 结果为 3
2.2.2 比较操作符
比较操作符用于比较两个值,并返回布尔值 true
或 false
。Rust 支持以下几种比较操作:
-
等于 (
==
):判断两个值是否相等。let is_equal = 5 == 5; // true
-
不等于 (
!=
):判断两个值是否不相等。let not_equal = 5 != 3; // true
-
大于 (
>
):判断左边的值是否大于右边的值。let greater_than = 5 > 3; // true
-
小于 (
<
):判断左边的值是否小于右边的值。let less_than = 5 < 3; // false
-
大于等于 (
>=
):判断左边的值是否大于或等于右边的值。let greater_than_or_equal = 5 >= 3; // true
-
小于等于 (
<=
):判断左边的值是否小于或等于右边的值。let less_than_or_equal = 5 <= 5; // true
2.2.3 逻辑操作符
逻辑操作符用于组合或反转布尔表达式的值。Rust 提供了三种主要的逻辑操作符:与(AND)、或(OR)和非(NOT)。
-
与 (
&&
):当两边的表达式都为true
时,整个表达式才为true
。let can_vote = age >= 18 && citizenship == "citizen"; // 如果年龄大于等于18且国籍为公民,则可以投票
-
或 (
||
):只要有一个表达式为true
,整个表达式就为true
。let can_enter = has_ticket || is_vip; // 如果有票或者VIP身份,则可以进入
-
非 (
!
):反转布尔表达式的值。let is_not_active = !is_active; // 如果 is_active 是 false, 则 is_not_active 为 true
2.2.4 位运算符
Rust 提供了几种位运算符,包括按位与、按位或、按位异或、按位非、左移和右移。
-
按位与 (
&
):对两个数的每一位执行与操作。只有当对应的两位都为 1 时,结果才为 1。let and_result = 5 & 3; // 二进制: 0101 & 0011 = 0001, 结果为 1
-
按位或 (
|
):对两个数的每一位执行或操作。只要有一个位为 1,结果就为 1。let or_result = 5 | 3; // 二进制: 0101 | 0011 = 0111, 结果为 7
-
按位异或 (
^
):对两个数的每一位执行异或操作。如果对应的两位不同,则结果为 1。let xor_result = 5 ^ 3; // 二进制: 0101 ^ 0011 = 0110, 结果为 6
-
按位非 (
!
):翻转操作数的所有位(注意:对于有符号整数,这涉及到补码表示)。let not_result = !5; // 对于 u8 类型,二进制: ~0000_0101 = 1111_1010, 结果取决于类型的具体定义
注意:由于 Rust 的整数类型是有符号或无符号的,使用
!
操作符时需要注意类型。例如,对于u8
,上面的例子会给出不同的结果。 -
左移 (
<<
):将一个数的所有位向左移动指定的位数,空出的位置用 0 填充。let left_shift_result = 5 << 1; // 二进制: 0101 << 1 = 1010, 结果为 10
-
右移 (
>>
):将一个数的所有位向右移动指定的位数。对于无符号数,空出的位置用 0 填充;对于有符号数,空出的位置用最高有效位填充(即保持符号不变)。let right_shift_result = 5 >> 1; // 二进制: 0101 >> 1 = 0010, 结果为 2
通过掌握这些操作符和表达式,你可以更灵活地控制程序的流程和逻辑。无论是进行简单的数学计算还是复杂的条件判断,理解如何正确使用这些操作符都是至关重要的。希望这部分内容能够帮助你更好地理解和应用 Rust 中的操作符。