'不'和'假'有什么不同

Quy*_*yen 1 logic ocaml

有什么区别

if mi.(j) = false && m.(j).(i) = false
Run Code Online (Sandbox Code Playgroud)

if not (mi.(j) && m.(j).(i))
Run Code Online (Sandbox Code Playgroud)

因为我认为它具有相同的含义,但是当我运行代码时,它给了我一个不同的答案.

Jef*_*eld 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
Run Code Online (Sandbox Code Playgroud)

你可能想要not (mi.(j) || m.(j).(i)).这基本上是DeMorgan法律的一个例子.


new*_*cct 5

if mi.(j) = false && m.(j).(i) = false
Run Code Online (Sandbox Code Playgroud)

实际上是一样的

if not mi.(j) && not m.(j).(i)
Run Code Online (Sandbox Code Playgroud)

根据德摩根的法律,这相当于

if not (mi.(j) || m.(j).(i))
Run Code Online (Sandbox Code Playgroud)