比較するには「==」を使う
算数の「1+2=3」では、「=」は「左の式の計算結果は右の値になる」という意味を表していると考えられるでしょう。これを矢印で表すとしたら「→」を使って、「1+2→3」と書くのが自然に思えます。それに対して、プログラムの代入の場合には「←」を使って、「a←1+2」などと書くのが自然でしょうか。実際、「←」を代入演算子として使う言語もあります。
算数よりもうちょっと高度な初歩の数学に出てくる「方程式」でも「=」を使いますが、この場合の「=」は、計算結果を表すわけでも、代入を表すわけでもなさそうです。これは「=」の左側(方程式では左辺と言いますね)と右側(右辺)の値(計算結果)が「等しい」ことを表しています。
プログラミング言語にも、その左右の値を比べるため演算子があります。それらは「比較演算子」と呼ばれています。コンピューターでは、比較することも演算なのです。比較演算子には、左右が等しいかどうかを調べる「==」、左が右より小さいかどうかを調べる「<」、その逆に右が左より小さいかどうかを調べる「>」などがあります。ほかのバリエーションとしては、左が右より小さいか等しい(以下)を調べる「<=」や、その逆の「>=」もあります。
例えば、「a」という変数の値が「1+2」と等しいかどうかを調べる演算は「a == 1+2」のように書きます。見るからに、これは「a = 1+2」と紛らわしいと思われるでしょう。でも、意味はまったく異なります。
「=」と「==」が紛らわしいのは事実で、プログラミングにだいぶ慣れてきても、うっかり間違えることがあります。比較しているつもりで代入してしまうのです。その場合、エラーとはならないのにプログラムの動きはまったく期待したようにはならず、やっかいなバグの原因となります。
プログラミングでは「=」と「==」の違いをよく理解したうえで、注意して使ってください。
比較の結果は「真偽値」で表す
比較演算子を使って比較した結果も、ある種の演算の結果なので、なんらかの値が得られるはずです。Playgroundの結果を確認てみましょう。これまでは、計算結果の数字が表示されていたところには、「true」とか「false」とか、見慣れない文字が表示されています。これらはいずれも立派な「値」なのです。
日本語にすれば、trueは「真(しん)」、falseは「偽(ぎ)」となります。これらを合わせて「真偽値(しんぎち)」と呼びます。これは整数とか、浮動小数点数とかと同様に値の種類を表しますが、可能な値はtrueとfalseの2種類しかない、コンピューターならでは値の一種なのです。
比較演算子を使って比較した結果が正しければtrue、正しくなければfalseとなっていることには、すぐに気づくでしょう。数値同士を比較することも、数値と変数を比較することも、変数同士を比較することも可能です。
くどいようですが、真偽値も値なので、それを変数に代入することもできます。また足し算や引き算のような演算はできませんが、真偽値のために用意されたある種の演算は可能です。それについては、真偽値を使って何をするのかということと合わせて、また回を改めて取り上げましょう。
次回の予定
次回は、真偽値を扱うために専用に用意されたいくつかの演算を紹介しながら、真偽値というものが、プログラムの中でどのような役割を果たすのかを見ていきましょう。いよいよプログラミングの真髄に近づきます。