之间有什么区别
if mi.(j) = false && m.(j).(i) = false
和
if not (mi.(j) && m.(j).(i))
因为我认为它具有相同的含义,但是当我运行代码时它会给我一个不同的答案。
答案 0 :(得分: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))
。这基本上是
DeMorgan法律的一个例子。
答案 1 :(得分:5)
if mi.(j) = false && m.(j).(i) = false
实际上与
相同if not mi.(j) && not m.(j).(i)
根据德摩根的法律,这等同于
if not (mi.(j) || m.(j).(i))
答案 2 :(得分: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))
'不'并不意味着错误,但意味着与声明相反。
希望它有所帮助。
答案 3 :(得分:0)
要回答基本问题,x=false
和not x
之间没有区别。这两个表达式始终始终产生相同的结果。正如其他人所指出的那样,两位代码的实际问题是没有意识到你没有使用过DeMorgan的定律。第一个版本相当于
(not m.(j)) && (not m.(j).(i))
与
不一样not ( m.(j) && m.(j).(i) )
我发现记住这种事情的最好方法是考虑真实世界的句子。如果我说“我想要一天不下雨而且不下雪。”这与说“我想要一天不下雨和下雪”不同。实际上相当于第一句的句子是“我想要一个既不下雨也不下雪的日子”。 (即不(下雨或下雪))。所以,你必须牢记你的逻辑。
这就是为什么等同于第一个语句
not ( m.(j) || m.(j).(i) )