如何测试一个条件是不是为真?
Posted
技术标签:
【中文标题】如何测试一个条件是不是为真?【英文标题】:How to test if exactly one condition is true?如何测试一个条件是否为真? 【发布时间】:2021-08-05 07:46:04 【问题描述】:如果我在 Pascal 中有一组布尔变量,我如何测试 其中一个是否是 True
?
【问题讨论】:
b1 xor b2 xor b3
如果它们都是真的,那么它们也是真的。你应该解决这个问题,说出你真正想要的——正好是一个真或三变量异或。此外,您应该说明您正在使用哪种语言,因为它们可能使用不同的句法特征。
显然没有简单的方法可以做到这一点,我在这篇文章中学到了这一点:link
【参考方案1】:
在 Pascal 中,您可以这样做:
if Integer(a) + Integer(b) + Integer(c) = Integer(true) then
writeln("exactly one is true");
与Integer(true)
进行比较很重要,因为它在不同版本的 Pascal 中可能是不同的值。
【讨论】:
我明白了。因为总和只能给整数 1 到只有 1 为真。 请注意,在 Delphi 中,布尔变量可能(取决于它的创建方式)与1 = Ord(True)
不同。在这种奇怪的情况下,更安全的是Ord(a <> False) + Ord(b <> False) + Ord(c <> False) = 1
。因为即使a
恰好是Boolean(4)
,我们也有Ord(a <> False) = Ord(True) = 1
。以上是关于如何测试一个条件是不是为真?的主要内容,如果未能解决你的问题,请参考以下文章