什么'!((n % 5 != 0) ||(n % 20 == 0))'变身?为什么呢?我似乎不明白
What does `!((n % 5 != 0) || (n % 20 == 0))` trasnform into? and why? I don't seem to get it
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))
现在你有结果了。
相关文章:
- std::具有相同基类的类的变体
- 访问者访问变体并返回不同类型时出错
- 我应该使用什么来代替void作为变体中的替代类型之一
- 将shared_ptr移动到<StructA>shared_ptr<变体<结构A、结构 B>>
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 如何比较自定义类的std::变体
- 通过网络、跨平台传递std::变体是否安全
- 有可能使shared_ptr协变吗
- 对于循环变体比较
- 在不传递参数数量且只有3个点的情况下,如何使用变差函数
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 我不明白这段代码是如何对这个pythonlist()进行排序的,也不明白如何用C++中的向量来重现它
- 不明白迭代器,引用和指针失效,一个例子
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 标准::变体的赋值运算符
- 使用变量值作为 PlaySound 中的路径
- 如何@ref同一方法的不同变体?
- 无限嵌套具有变体的地图
- 什么'!((n % 5 != 0) ||(n % 20 == 0))'变身?为什么呢?我似乎不明白
- 我不明白为什么 for 循环变得无限