3.2 操作符与表达式
在仓颉编程语言中,操作符与表达式是构建程序逻辑的基础。本节将详细介绍仓颉语言中常用的操作符类型及其使用方法,以及如何通过表达式组合这些操作符来实现复杂的逻辑。
3.2.1 操作符的分类
仓颉语言中的操作符可以分为以下几类:
算术操作符
用于执行基本的数学运算,包括:+:加法-:减法*:乘法/:除法%:取模(求余数)**:幂运算
示例:
a = 10 b = 3 c = a + b # 结果为 13 d = a ** b # 结果为 1000比较操作符
用于比较两个值的大小或相等性,返回布尔值(true或false):==:等于!=:不等于>:大于<:小于>=:大于等于<=:小于等于
示例:
x = 5 y = 10 result = x < y # 结果为 true逻辑操作符
用于组合多个布尔表达式:&&:逻辑与(AND)||:逻辑或(OR)!:逻辑非(NOT)
示例:
a = true b = false c = a && b # 结果为 false d = a || b # 结果为 true e = !a # 结果为 false赋值操作符
用于将值赋给变量:=:基本赋值+=、-=、*=、/=、%=:复合赋值
示例:
x = 5 x += 3 # 等价于 x = x + 3,结果为 8位操作符
用于对二进制位进行操作:&:按位与|:按位或^:按位异或~:按位取反<<:左移>>:右移
示例:
a = 5 # 二进制 0101 b = 3 # 二进制 0011 c = a & b # 结果为 1 (二进制 0001)其他操作符
?::三元条件操作符..:范围操作符(用于生成序列)
示例:
x = 10 y = x > 5 ? "大于5" : "小于等于5" # 结果为 "大于5" range = 1..5 # 生成序列 [1, 2, 3, 4, 5]
3.2.2 表达式的组成与优先级
表达式是由操作符、操作数和括号组成的组合,用于计算值。仓颉语言中的表达式遵循以下优先级规则(从高到低):
- 括号
() - 一元操作符(如
!、~) - 算术操作符(
**、*、/、%、+、-) - 比较操作符(
==、!=、>、<、>=、<=) - 逻辑操作符(
&&、||) - 赋值操作符(
=、+=、-=等)
示例:
a = 5
b = 10
c = (a + b) * 2 # 先计算 a + b,再乘以 2,结果为 30
d = a > 5 && b < 20 # 先比较 a > 5 和 b < 20,再进行逻辑与运算
3.2.3 操作符的重载
仓颉语言支持操作符重载,允许用户为自定义类型定义操作符的行为。例如,可以为自定义的 Vector 类型实现加法操作符 +:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2 # 结果为 Vector(4, 6)
3.2.4 注意事项
- 类型一致性:操作符的操作数类型必须一致,否则会引发类型错误。例如,不能直接将字符串与数字相加。
- 短路求值:逻辑操作符
&&和||支持短路求值。如果第一个操作数已经能确定结果,则不会计算第二个操作数。 - 操作符优先级:在复杂的表达式中,建议使用括号明确优先级,避免歧义。
通过掌握操作符与表达式的使用方法,您可以在仓颉语言中编写出高效且易读的代码。在下一节中,我们将深入探讨控制流的相关内容。
