`((n%5!= 0)||(n%20 == 0))`转换成什么?为什么?我似乎没有得到它[关闭]

问题描述 投票:0回答:3

标题。我需要知道!((n % 5 != 0) || (n % 20 == 0))转换成什么以及为什么。我说转换是因为它的开头是!

我曾尝试将其转换为((n%5==0) || (n%20==0)),但我很确定这不是正确的答案。

谢谢!

c++ if-statement logical-operators modulo
3个回答
2
投票

否定比它看起来难。

如果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的定律之一,您可以记住它,但是它们并不难为您自己“发现”,您只需要记住要“反转”该操作以及操作数。


1
投票

假设您打算使用DeMorgan's Law,则可以通过不对每个表达式进行“与”运算,然后将“或”翻转为“与”(反之亦然)来将NOT分布到表达式中。

所以

!((n % 5 != 0) || (n % 20 == 0))

可以成为

(!(n % 5 != 0) && !(n % 20 == 0))

可以成为哪个

((n % 5 == 0) && (n % 20 != 0))

1
投票

原件:!((n % 5 != 0) || (n % 20 == 0))

应用戴摩根定律:(!(n % 5 != 0) && !(n % 20 == 0))

使其更清晰(假设n类似于int,并且运算符未过载):((n % 5 == 0) && (n % 20 != 0))

现在您有了结果。

© www.soinside.com 2019 - 2024. All rights reserved.