Title.我需要知道!((n % 5 != 0) || (n % 20 == 0))
会变成什么以及为什么。我说转换是因为它一开始就有!
。
我尝试将其转换为((n%5==0) || (n%20==0))
但我很确定这不是正确的答案。
谢谢!!
否定比看起来更难。
如果 A 和 B 中至少有一个为真,则"A 或 B"为真。
因此,如果 A 和 B 都不为真,它的否定"不是(A 或 B("必须是真的,这与 A 和 B 都是假
的相同。也就是说,否定等价于"(不是A(和(不是B("。
这导致你!(n % 5 != 0) && !(n % 20 == 0)
,或(n % 5 == 0) && (n % 20 != 0)
.
这是德摩根定律之一,你可以记住,但它们不是为了自己"发现"而来的,你只需要记住"反转"运算和操作数。
假设你的意思是使用德摩根定律,你可以通过将 NOT 分配到表达式中,方法是 NOT 每个表达式并将 OR 翻转到 AND(反之亦然(。
所以
!((n % 5 != 0) || (n % 20 == 0))
可以成为
(!(n % 5 != 0) && !(n % 20 == 0))
哪个可以成为
((n % 5 == 0) && (n % 20 != 0))
原文:!((n % 5 != 0) || (n % 20 == 0))
应用德摩根定律:(!(n % 5 != 0) && !(n % 20 == 0))
让它更清楚(假设n
类似于int
并且运算符没有过载(:((n % 5 == 0) && (n % 20 != 0))
现在你有结果了。