放置"!"在条件声明之前

时间:2015-06-29 19:55:58

标签: c++ conditional-statements

例如:

while (! ( (planet == "Mercury") || (planet == "Pluto") ) )
{
     <body>;
}

上述内容与以下内容相同:

while ( (planet != "Mercury") || (planet != "Pluto") )
{
     <body>;
}

如果没有,在第一个代码块中显示的条件语句之前放置NOT操作是什么意思?

4 个答案:

答案 0 :(得分:9)

等价物是

while (planet != "Mercury" && planet != "Pluto")

这是De Morgan's laws in propositional logic

之一

enter image description here

使用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之一的实例。这些法律对于理解如何正确地进行这些变换非常有帮助(根据我的经验,这是一个非常常见的错误)。

相关问题