[C# プログラミング入門] 演算子について

今回は演算子についてです。

演算子は変数、リテラルと組み合わせて計算や比較などを行うことができます。
ちなみにリテラルはコードに直接書いた数字(10とか1.34とか)や文字のことです。

演算子のことをオペレーター(operator)と言います。

スポンサーリンク

算術演算子(+ – * / %)

数値型の変数(int、doubleなど)や数値リテラル(10、3.14など)の計算を行います。

演算子  演算 
+加算2 + 3 ⇒ 5
減算5 – 4 ⇒ 1  マイナス符号にもなる(x、10)
*乗算2 * 3 ⇒ 6
/除算4 / 2 ⇒ 2  0で割ろうとするとエラーになるので注意。
%剰余3 % 2 ⇒ 1  3を2で割った余り

実際にコードを書く場合、リテラル同士の計算で使う場面は少なく、
変数とリテラルの計算、変数と変数の計算という組み合わせが多いです。

int x = 10;
int y = 20;
System.Console.WriteLine(x + y);     //30
System.Console.WriteLine(x * y / 2); //100  三角形の面積

違う型同士の計算の場合、自動的にサイズの大きい方に型が変換されて計算が行われます。

double x = 10.0;
int y = 20;
System.Console.WriteLine(x + y); //30 double型になる

計算の優先順位

数学と同じで乗算( *)、除算( / )加算( + )、減算( – )よりも先に計算されます。

System.Console.WriteLine(2 + 3 * 4);   //14

乗算と除算どうし、加算と減算どうしの場合は、左側から計算されます。

System.Console.WriteLine(10 - 5 + 3); // 8
System.Console.WriteLine(4 / 2 * 10); // 20

数学と同じようにかっこ ( ) で囲むと優先順位を変えることができます。

System.Console.WriteLine(2 + 3 * 4);   //14
System.Console.WriteLine((2 + 3) * 4); //20
スポンサーリンク

式について

演算子は1つ以上のオペランドを持ちます。

急にでてきたオペランドの説明です。
オペランドとは計算や判定の対象になる変数やリテラルのことです。

算術演算子のところで出てきた「 x + y 」のxyがオペランドです。
+演算子は2つのオペランドの合計を計算するということになります。

オペランドを1つしか必要としない演算子を単項演算子
オペランドを2つ必要とする演算子を2項演算子と言います。
+演算子は2項演算子になります。

演算子とオペランドで構成された文をといいます。
プログラム実行時に式の結果を演算することを評価といいます。

スポンサーリンク

等値演算子(== !=)

左のオペランドと右のオペランドが等しいかどうかを確認します。
結果は論理型(truefalseのどちらか)になります。

左辺、右辺と書いていますが本当は左側のオペランド、右側のオペランドです。
急にでてきたオペランドはしっくりこないので左辺、右辺で説明しています。

演算子意味
==左辺と右辺が等しい場合にtrue
!=左辺と右辺が等しくない場合にtrue
System.Console.WriteLine(5 == 5); // true
System.Console.WriteLine(5 != 5); // false

数値型以外の等値

等値演算子は数値型以外にも使用できます。

文字列同士の場合、大文字・小文字が区別され判定されます。
また、両方がnullの場合はtrueになります。

string s1 = "あいう";
string s2 = "あいう";
System.Console.WriteLine(s1 == s2); //true

string s3 = "Abc";
string s4 = "abc";
System.Console.WriteLine(s3 == s4); //false

string s5 = null;
string s6 = null;
System.Console.WriteLine(s5 == s6); //true

文字列以外の参照型の場合、同じオブジェクトを参照している場合にtrueになります。

スポンサーリンク

比較演算子(<<= >>=)

左辺と右辺の比較を行います。左辺、右辺ともに数値型(整数・浮動小数点)です。
結果は論理型(truefalseのどちらか)になります。

演算子意味
<左辺が右辺より小さい場合はtrue
<=左辺が小さいか右辺と等しい場合にtrue
>左辺が右辺より大きい場合はtrue
>=左辺が右辺より大きいか等しい場合にtrue
System.Console.WriteLine(5 <  5); // false
System.Console.WriteLine(5 <= 5); // true
System.Console.WriteLine(5 >  5); // false
System.Console.WriteLine(5 >= 5); // true
スポンサーリンク

代入演算子(= += -= *= /=)

代入演算子は右辺の値を左辺に代入します。

演算子
=右辺の値を左辺に代入するx = 5;
+=右辺を加算して左辺に代入するx += 5; (x = x + 5;と同じです)
-=右辺を減算して左辺に代入するx -= 5; (x = x – 5;と同じです)
*=右辺を乗算して左辺に代入するx *= 5; (x = x * 5;と同じです)
/=右辺を除算して左辺に代入するx /= 5; (x = x / 5;と同じです)
int a = 10;
System.Console.WriteLine(a += 5); // 15
a = 10;
System.Console.WriteLine(a -= 5); // 5
a = 10;
System.Console.WriteLine(a *= 5); // 50
a = 10;
System.Console.WriteLine(a /= 5); // 2

代入演算子(=)を使った式の結果は左辺に代入された値です。
= は等値演算子(==)と間違いやすいので注意が必要です。

int a = 1;
System.Console.WriteLine(a == 1); // true
System.Console.WriteLine(a = 1);  // 1
スポンサーリンク

論理演算子

論理型のオペランドを使用する場合と、
整数の数値型のオペランドを使用する場合(ビット演算とか呼ばれる)があります。

とりあえずブール論理演算子を覚えましょう。

スポンサーリンク

ブール論理演算子(! ^ & | && ||)

論理型同士の論理演算を行います。
結果は論理型(trueまたはfalse)になります。

演算子
!オペランドの否定(NOT)
オペランドの前に付けて否定を表します(単項演算子)
!true ⇒ false、!false ⇒ true
^論理排他的OR(XOR)
左辺がtrue、右辺がfalseの場合にtrue
左辺がfalse、右辺がtrueの場合にtrue
&左辺と右辺がtrueの場合、trueになる(AND)
左辺がfalseの場合でも右辺を評価する
&&左辺と右辺がtrueの場合、trueになる(AND)
左辺がfalseの場合、右辺は評価しない
|左辺または右辺がtrueの場合、trueになる(OR)
左辺がtrueの場合でも右辺を評価する
||左辺または右辺がtrueの場合、trueになる(OR)
左辺がtrueの場合、右辺は評価しない

どんなときに使うのか?

論理演算、なにやら難しい言葉ですが、主にif文の条件式で使用されます。
if文は式の結果の値(true、false)によって処理を分岐します。

たとえば、数値を10以上20以下と範囲指定をしたい場合、
比較演算子とブール論理演算子をつかいます。

int x = 15;
if(x >= 10 && x <= 20) {
    //範囲内なので処理を行う
}

int y = 50;
if(y >= 10 && y <= 20){
    //範囲外なのでここは通らない
}

xの場合、&&の左辺がx >= 10 がtrue、右辺がx <= 20がtrueになり、true && trueなので条件を満たします。
yの場合、&&の左辺がy >= 10 がtrue、右辺がy <= 20がfalseになり、true && false なので条件は不成立になります。

論理演算の優先順位

評価の優先順位はこのようになります。
高い ⇒⇒⇒ 低い
!&^|&&||

かっこ ( ) を使うと優先順を変えることができます。


C# プログラミング講座に戻る

コメント

タイトルとURLをコピーしました