Not演算子は何をしているのか

Not演算子は何をしているのか

Boolean型の式の判定

もともと、

If isHoge = True Then fooBar

みたいな書き方をする方だった。

If isHoge Then fooBar

みたいな書き方が、何か大切なことを省略しているような気がしてイヤだったのだ。

ところが、あるときthomさんのブログを読んで、

そういや、(hoge > fuga) = True なんていちいち書かないよなー

と、己の行動の矛盾に気がついて以来、IfとかDo Whileなんかの条件式部分にTrue / Falseは書かない派になった。

Not演算子の正体

したがって、上の例でたとえば、

If isHoge = False Then fooBar

としたいようなときには、

If Not isHoge Then fooBar

と書くことになる。

で、このNotの正体を調べてみた。

イミディエイトにいろいろ打ち込んで調べてみると、

f:id:akashi_keirin:20180327083543j:plain

こんな感じ。

要するに、

  • Not hoge
    は、
    -1 - hoge
    のことらしい
  • Not True
    は、
    -1 - (-1)
    のことなのでFalse(0)になる
  • Not False
    は、
    -1 - 0
    のことなのでTrue(-1)になる

ということらしい。

おわりに

はたして、この推理は正しいのだろうか……。

どの道、よく考えられているなあ。

@akashi_keirin on Twitter