- Euphoria 教程
- Euphoria - 首页
- Euphoria - 概述
- Euphoria - 环境
- Euphoria - 基本语法
- Euphoria - 变量
- Euphoria - 常量
- Euphoria - 数据类型
- Euphoria - 运算符
- Euphoria - 分支
- Euphoria - 循环类型
- Euphoria - 流程控制
- Euphoria - 短路
- Euphoria - 序列
- Euphoria - 日期和时间
- Euphoria - 过程
- Euphoria - 函数
- Euphoria - 文件I/O
- Euphoria 有用资源
- Euphoria - 快速指南
- Euphoria - 库例程
- Euphoria - 有用资源
- Euphoria - 讨论
Euphoria - 运算符
Euphoria 提供了一套丰富的运算符来操作变量。我们可以将所有 Euphoria 运算符分为以下几组:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
算术运算符
算术运算符在数学表达式中的使用方式与在代数中相同。下表列出了算术运算符。假设整数变量 A 为 10,变量 B 为 20,则:
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法 - 将运算符两侧的值相加 | A + B 将得到 30 |
- | 减法 - 从左操作数中减去右操作数 | A - B 将得到 -10 |
* | 乘法 - 将运算符两侧的值相乘 | A * B 将得到 200 |
/ | 除法 - 将左操作数除以右操作数 | B / A 将得到 2 |
+ | 一元加 - 这对变量值没有影响。 | +B 得到 20 |
- | 一元减 - 这将创建给定变量的负值。 | -B 得到 -20 |
关系运算符
Euphoria 语言支持以下关系运算符。假设变量 A 为 10,变量 B 为 20,则:
运算符 | 描述 | 示例 |
---|---|---|
= | 检查两个操作数的值是否相等,如果相等,则条件为真。 | (A = B) 为假。 |
!= | 检查两个操作数的值是否相等,如果不相等,则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果大于,则条件为真。 | (A > B) 为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果小于,则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果大于或等于,则条件为真。 | (A >= B) 为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果小于或等于,则条件为真。 | (A <= B) 为真。 |
逻辑运算符
下表列出了逻辑运算符。假设布尔变量 A 为 1,变量 B 为 0,则:
运算符 | 描述 | 示例 |
---|---|---|
and | 称为逻辑与运算符。如果两个操作数都不为零,则条件为真。 | (A and B) 为假。 |
or | 称为逻辑或运算符。如果两个操作数中任何一个不为零,则条件为真。 | (A or B) 为真。 |
xor | 称为逻辑异或运算符。如果其中一个为真,则条件为真;如果两个操作数都为真或都为假,则条件为假。 | (A xor B) 为真。 |
not | 称为逻辑非运算符,它否定结果。使用此运算符,真变为假,假变为真。 | not(B) 为真。 |
您还可以将这些运算符应用于除 1 或 0 之外的数字。约定是:零表示假,非零表示 *真*。
赋值运算符
Euphoria 语言支持以下赋值运算符:
运算符 | 描述 | 示例 |
---|---|---|
= | 简单赋值运算符,将值从右操作数赋值给左操作数。 | C = A + B 将 A + B 的值赋给 C |
+= | 加法赋值运算符,它将右操作数添加到左操作数,并将结果赋给左操作数。 | C += A 等效于 C = C + A |
-= | 减法赋值运算符,它从左操作数中减去右操作数,并将结果赋给左操作数。 | C -= A 等效于 C = C - A |
*= | 乘法赋值运算符,它将右操作数与左操作数相乘,并将结果赋给左操作数。 | C *= A 等效于 C = C * A |
/= | 除法赋值运算符,它将左操作数除以右操作数,并将结果赋给左操作数。 | C /= A 等效于 C = C / A |
&= | 连接运算符 | C &= {2} 与 C = {C} & {2} 相同 |
注意 - 赋值语句中使用的等号 '=' 不是运算符,它只是语法的一部分。
其他运算符
Euphoria 语言支持一些其他运算符。
& 运算符
可以使用“&”运算符连接任何两个对象。结果是一个序列,其长度等于连接对象的长度之和。
例如:
#!/home/euphoria-4.0b2/bin/eui sequence a, b, c a = {1, 2, 3} b = {4} c = {1, 2, 3} & {4} printf(1, "Value of c[1] %d\n", c[1] ) printf(1, "Value of c[2] %d\n", c[2] ) printf(1, "Value of c[3] %d\n", c[3] ) printf(1, "Value of c[4] %d\n", c[4] )
这将产生以下结果:
Value of c[1] 1 Value of c[2] 2 Value of c[3] 3 Value of c[4] 4
Euphoria 运算符的优先级
运算符优先级决定了表达式中项的分组。这会影响表达式的计算方式。某些运算符的优先级高于其他运算符;例如,乘法运算符的优先级高于加法运算符。
例如,x = 7 + 3 * 2
这里,x 被赋值为 13,而不是 20,因为运算符 * 的优先级高于 +。
因此,它首先计算 3*2,然后加到 7 中。
这里,优先级最高的运算符出现在表的最上方,优先级最低的运算符出现在表的最下方。在表达式中,首先计算优先级较高的运算符。
类别 | 运算符 | 结合性 |
---|---|---|
后缀 | 函数/类型调用 | |
一元 | + - ! not | 右到左 |
乘法 | * / | 左到右 |
加法 | + - | 左到右 |
连接 | & | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | = != | 左到右 |
逻辑与 | and | 左到右 |
逻辑或 | or | 左到右 |
逻辑异或 | xor | 左到右 |
逗号 | , | 左到右 |
广告