我有三个布尔值 A、B 和 C。我需要编写一个 IF 语句,当且仅当这些值中只有一个为真时才会执行。换句话说,这是真值表:
A | B | C | Result
---+---+---+--------
0 | 0 | 0 | 1
0 | 0 | 1 | 1
0 | 1 | 0 | 1
0 | 1 | 1 | 0
1 | 0 | 0 | 1
1 | 0 | 1 | 0
1 | 1 | 0 | 0
1 | 1 | 1 | 0
写这个的最好方法是什么?我知道我可以列举所有可能性,但这似乎……太冗长了。:P
补充:只有一个想法:
!(A && B) && !(B && C) && !(A && C)
这将检查没有设置两个值。关于总和的建议也可以。也许更具可读性...
(A?1:0) + (B?1:0) + (C?1:0) <= 1
PS这是用于生产代码的,所以我更关注代码的可读性而不是性能。
添加 2:已经接受的答案,但对于好奇的人 - 它是 C#。:) 这个问题几乎与语言无关。