例如:
while (! ( (planet == "Mercury") || (planet == "Pluto") ) )
{
<body>;
}
上述内容与以下内容相同:
while ( (planet != "Mercury") || (planet != "Pluto") )
{
<body>;
}
如果没有,在第一个代码块中显示的条件语句之前放置NOT操作是什么意思?
答案 0 :(得分:9)
等价物是
while (planet != "Mercury" && planet != "Pluto")
这是De Morgan's laws in propositional logic
之一
使用C ++语法,上面的内容将是
!(P || Q) == (!P && !Q)
答案 1 :(得分:1)
您应该明确阅读De Morgan's Laws。
TLDR大纲:
!(A || B) = (!A && !B)
!(A && B) = (!A || !B)
这种逻辑非常基础,您将在计算机编程中看到并应用它。
答案 2 :(得分:1)
“while (! ( (planet == "Mercury") || (planet == "Pluto") ) )
”表示如果这些条件中的任何一个...... planet == "Mercury"
和planet == "Pluto")
......是真的那么“(! ( (planet == "Mercury") || (planet == "Pluto") ) )
”将返回false。
所以
while (! ( (planet == "Mercury") || (planet == "Pluto") ) )
{
<body>;
}
相当于
while (planet != "Mercury" && planet != "Pluto")
{
<body>;
}
并且
while ( (planet != "Mercury") || (planet != "Pluto") )
{
<body>;
}
相当于
while ( !((planet == "Mercury") && (planet == "Pluto") ))
{
<body>;
}
答案 3 :(得分:0)
这是De Morgan's laws之一的实例。这些法律对于理解如何正确地进行这些变换非常有帮助(根据我的经验,这是一个非常常见的错误)。