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になるのです。
プログラミング初学者は、ビックリマークが入ると急に難しくなったと感じ、それ以上の先の理解が困難になります。ビックリマークの概念を理解しやすくする良い記事を見つけたので、紹介がてら書いてみました。
ありがとうございます。 弊社としても皆様のお役に立てるよう、今後も活動を行っていこうと思います。