Halcon 提供了丰富的运算符,涵盖数学运算、逻辑运算、位运算、字符串操作等多个类别。以下分类整理 Halcon 的主要运算符:
数学运算符
- 基本运算:
+
,-
,*
,/
,^
(幂运算) - 取模运算:
mod
- 绝对值:
abs
- 比较运算:
==
,!=
,<
,>
,<=
,>=
* 示例:数学运算
A := 5 + 3 * 2; // 结果为 11
B := 2^3; // 结果为 8
逻辑运算符
- 逻辑与:
and
,&&
- 逻辑或:
or
,||
- 逻辑非:
not
,!
- 异或:
xor
* 示例:逻辑运算
Flag := (A > 0) and (B < 10); // 结果为 true
位运算符
- 按位与:
band
- 按位或:
bor
- 按位非:
bnot
- 按位异或:
bxor
- 移位运算:
shl
(左移),shr
(右移)
* 示例:位运算
Result := 5 band 3; // 结果为 1 (0101 & 0011 = 0001)
字符串运算符
- 连接:
+
- 比较:
==
,!=
,<
,>
,<=
,>=
- 子串匹配:
$
(包含检查)
* 示例:字符串操作
Text := 'Hello' + ' World'; // 结果为 'Hello World'
Match := 'abc' $ 'abcdef'; // 结果为 true
特殊运算符
- 赋值:
:=
- 范围生成:
|
(如1 | 5
生成[1,2,3,4,5]
) - 条件表达式:
? :
(三元运算符)
* 示例:三元运算符
Value := (A > B) ? A : B; // 返回较大值
矩阵与数组运算
- 元素级运算:
.+
,.-
,.*
,./
- 转置:
'
- 矩阵乘法:
*
* 示例:矩阵操作
MatrixA := [1,2; 3,4];
MatrixB := MatrixA .* 2; // 逐元素乘以 2
类型转换运算符
- 显式转换:
$
(如int$'123'
将字符串转为整数)
* 示例:类型转换
Number := int$'42'; // 字符串转整数
其他运算符
- 成员检查:
in
(检查元素是否在数组中) - 范围检查:
between
* 示例:范围检查
Valid := X between [0, 100]; // 检查 X 是否在 0~100 之间
注意:Halcon 的运算符优先级遵循通用规则,但建议使用括号明确运算顺序以避免歧义。