見出し画像

11月2日 マイナス×マイナスはプラス

11月2日ですね。

つい先日ですが、このような記事を見つけました。

https://gendai.media/articles/-/100871

これ、なかなかわかりやすい説明です。マイナス×マイナスはなぜプラスになるのか。


プログラムを書いていると、このロジックはしばしば使います。

例えばJavaScriptでよく書くのは、

flg = true;
if (flg) {
 flgの値がtrueの場合の処理
}

といった条件式です。


これ、下のようにも書けます。

flg = false;
if (!flg) {
  flgの値がfalseではない場合、つまりtrueの場合の処理
}


もう少し分解してみると、
if (!flg) {とは、if (!flg === true) {の意味です。

その中の、!flgとは、
! かつ falseという意味です。それを式に書くと! × falseになります。


!とは、JavaScriptでは、否定の意味を指します。
そして、ブログラムでは否定やfalseとは、-1に入れ替えられます。
つまり、!flgとは、-1 × -1を指すのです。


記事の中の例で言うと、下の例の

flg = false;
if (!flg) {
は、-1 × -1 = 1の値をとります。

if (!flg)は、if (-1 × -1)、つまり、if (1)を意味します。


さっき、ブログラムでは、否定やfalseとは、-1に入れ替えられます、と書きました。これは逆に肯定やtrueを1で表せることを示します。つまり、if (!flg)とは、if (true)と書くことができるのです。if (true === true )とも書けます。


記事の例でいうと、

flg = false;
if (!flg) {
は、「借金」が「減って」=「嬉しい」となり、つまりマイナス×マイナスはプラス、trueになるのです。


ては、最初の例はどうでしょう。

flg = true;
if (flg) {


は、flgの前のビックリマークがありません。これは、じつは、ビックリマークを明示しなければ、自動的にtrueを意味します。

つまり、

flg = true;
if (flg)は、if (1 × 1)、つまり、if (1)を意味します。あとは一緒ですね。


記事の例でいうと、

flg = true;
if (flg)
は、「お金」が「増えて」=「嬉しい」となり、つまりプラス×プラスはプラス、trueになるのです。

プログラミング初学者は、ビックリマークが入ると急に難しくなったと感じ、それ以上の先の理解が困難になります。ビックリマークの概念を理解しやすくする良い記事を見つけたので、紹介がてら書いてみました。

ありがとうございます。 弊社としても皆様のお役に立てるよう、今後も活動を行っていこうと思います。