演算子
どの言語でも比較的頻繁に使われる代表的な演算子は大きく3つ
・算術演算子( +, -, *, /, % ... )
・比較演算子(<, >, <=, >=, ==, !=, ...)
・論理演算子(&&, ||, !, ...)
他にも演算子があるのか軽く調べてみたところ、結構たくさんあるみたいです。
・ビット演算子(データ圧縮、暗号化などで使用される演算子)
・アドレス演算子(メモリ上のアドレスを取得するための演算子)
・参照演算子(参照型変数の値を取得するための演算子)
・キャスト演算子(型を一時的に別の型に変換するための演算子)
・他にも、スコープ演算子、アサーション演算子などなど...。
初学者がまず身に着けたい演算子は最初に記述している3つ。それぞれ中身を見てみます。
算術演算子
int a = 10;
int b = 3;
Debug.log(a + b); // 加算(plus)
Debug.log(a - b); // 減算(minus)
Debug.log(a * b); // 乗算(multiply)
Debug.log(a / b); // 除算(divide)
Debug.log(a % b); // 剰余演算(modulo)
a++; // 前置インクリメント(aの値に1を足す)
b--; // 前置デクリメント (bの値から1を引く)
Debug.Log(a);
Debug.Log(b);
Debug.Log(a += 1); // 加算代入(a = a + 1 と同じ計算)
Debug.Log(b -= 3); // 減算代入(b = b - 3 と同じ計算)
Debug.Log(-a); // 単項マイナス(符号の反転)
コードで表記してみましたが、どれもよく使われる書き方です。
たくさんコードを書いているうちに、書き方は自然と身についてくると思います。
少し余談なのですが、次のコードの出力結果はどのようになると思いますか?
int a = 4;
Debug.Log(a++);
実際にコードを書いていく中で、上記のようなコードを書くことはまずないと思いますが、出力結果は "4" になります。
a++ の式以降の行では 元の値に1を足した値として扱われますが、数式全体としては1が足される前の値で評価されるようです。参考までに記述しておきます。
比較演算子
int a = 4;
int b = 12;
Debug.log(a == b); // aとbが等しい → True
Debug.log(a != b); // aとbが等しくない → True
Debug.log(a < b); // aがbより小さい → True
Debug.log(a <= b); // aがb以下 → True
Debug.log(a > b); // aがbより大きい → True
Debug.log(a >= b); // aがb以上 → True
比較演算子の出力結果は "True" "False" の2つです。比較した数式が正しいか、間違っているかを "True" "False" で出力します。「真偽値」や、「論理値」と表現されます。
サンプルコードでは数値を扱いましたが、比較演算子の "==" は文字列の比較でも使用できます。
この論理値は "1" と "0" で表現されることもありますが、"1" と "0" は数値です。論理値と数値は異なる型となるため、お互いを比較することはできません。(true == 1 のような比較はできないです。)ただし、if文の条件式に理論値を使用する場合は暗黙的に、true は 1 に変換され、false は 0 に変換されているようです。
論理演算子
//論理積(AND)
if ("条件式1" && "条件式2")
{
//条件式1と条件式2の両方が条件を満たした時の処理
}
//論理和(OR)
if ("条件式1" || "条件式2")
{
//条件式1と条件式2のどちらか1つでも条件を満たした時の処理
}
//論理演算子は複数組み合わせることもできる
if ("条件式1" || "条件式2" && "条件式3")
{
//条件式1を満たすか、または条件式2と条件式3が同時に条件を満たした時の処理
}
//論理否定
bool a = true;
bool b = !a;
論理演算子は条件式でよく使われる演算子です。複数の論理演算子を組み合わせることも可能ですが、条件式が長く複雑になりそうな場合は、条件を分けたほうがいい場合もあります。
論理否定は条件を反転させる場合などに使用されます。例えば、bool型の変数aの初期値を "true" とします。別途用意した変数bにaの否定を代入した場合、bの値は "true"の否定なので、"false"が代入されたことになります。