2012-02-21 64 views
1

是什么什么是“不”和“假”之间的不同

if mi.(j) = false && m.(j).(i) = false 

if not (mi.(j) && m.(j).(i)) 

之间的区别,因为我认为它具有相同的含义,但是当我运行的代码它给了我一个不同的答案。

+0

简而言之:看你的括号! – Ashe 2012-02-21 22:00:24

回答

5

mi.(j)为真,m.(j).(i)为假。

mi.(j) = false && m.(j).(i) = false 
true = false && false = false 
false && true 
false 

not (mi.(j) && m.(j).(i)) 
not (true && false) 
not (false) 
true 

您可能想要not (mi.(j) || m.(j).(i))。这基本上是德摩根法律的一个实例 。

+0

是的,你是对的!谢谢。 – Quyen 2012-02-21 05:59:00

0
if mi.(j) = false && m.(j).(i) = false not equal to if not (mi.(j) && m.(j).(i)) 

if not (mi.(j) && m.(j).(i)) 

你对面的

(mi.(j) && m.(j).(i)) 

结果 '不' 并不意味着假,但指的声明相反。

希望它有帮助。

5
if mi.(j) = false && m.(j).(i) = false 

其实是一样的

if not mi.(j) && not m.(j).(i) 

其中,通过德摩根定律,相当于

if not (mi.(j) || m.(j).(i)) 
0

要回答的基本问题,没有x=falsenot x之间的区别。这两个表达式总是会始终产生相同的结果。正如其他人所指出的,这两个代码的实际问题是未能认识到你没有使用德摩根定律。第一个版本是相当于

(not m.(j)) && (not m.(j).(i)) 

这是不一样的

not (m.(j) && m.(j).(i)) 

我发现,要记住这样的事情最好的办法就是觉得现实世界的句子。如果我要说“我想要一天不下雨,而且不下雪”。这不同于说“我想要一天不会下雨和下雪”。实际上与第一句相同的句子是“我想要一天既不下雨也不下雪。” (即不(下雨或下雪))。所以,你必须记住你的逻辑。

这就是为什么相当于第一语句是

not (m.(j) || m.(j).(i)) 
相关问题