MiniZinc中是否存在And、Or逻辑运算符?具体如何使用?
MiniZinc完全支持逻辑与、逻辑或两类运算符,你提到的constraint a != 1 and b != 2;写法完全合法可用。
运算符对应规则
和常见编程语言的逻辑运算符对应关系如下:
| 其他编程语言常见写法 | MiniZinc关键字写法 | MiniZinc符号写法 | 说明 |
|---|---|---|---|
&&(逻辑与) | and | /\ | 仅当两边操作数都为true时结果为true |
||(逻辑或) | or | \/ | 两边操作数任意一个为true时结果为true |
!(逻辑非) | not | 无对应符号 | 对布尔值取反 |
常用写法示例
- 布尔变量赋值场景
你提到的boolean s = (a != 1 && b != 2);在MiniZinc中的对应写法如下:
var int: a; var int: b; var bool: s = (a != 1 and b != 2); % 等价符号写法 var bool: s = (a != 1 /\ b != 2);
- 约束声明场景
% 约束a不等于1 且 b不等于2 constraint a != 1 and b != 2; % 约束a等于1 或 b等于2 constraint a == 1 or b == 2;
注意:MiniZinc不支持直接使用
&&、||作为逻辑运算符,必须使用上述的关键字或符号写法。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

