标题。我需要知道!((n % 5 != 0) || (n % 20 == 0))
转换成什么以及为什么。我说转换是因为它的开头是!
。
我曾尝试将其转换为((n%5==0) || (n%20==0))
,但我很确定这不是正确的答案。
谢谢!
否定比它看起来难。
如果A和B中至少一个为true,则“ A或B”为true。
因此,如果A和B都不为真,那么它的否定值“ not(A or B)”必须为真,这与A和B都为假相同。
即,取反等效于“(不是A)和(不是B)”。
然后将您带到!(n % 5 != 0) && !(n % 20 == 0)
或(n % 5 == 0) && (n % 20 != 0)
。
这是DeMorgan的定律之一,您可以记住它,但是它们并不难为您自己“发现”,您只需要记住要“反转”该操作以及操作数。
假设您打算使用DeMorgan's Law,则可以通过不对每个表达式进行“与”运算,然后将“或”翻转为“与”(反之亦然)来将NOT分布到表达式中。
所以
!((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))
现在您有了结果。