
C#の比較演算子とは?使い方をご紹介!
比較演算子とはどういうものなのですか?
目次
C#の比較演算子
C#に限らず、ソースコードを製造していると、数字を比較したくなる場面がよくあります。
例えば、
・変数aと変数bは等しいか。
・変数cは変数dよりも大きいか。
・変数eは変数f以上か。
などです。
そのときに使用するのが「比較演算子」と呼ばれるものです。
この記事では、C#の比較演算子について説明します。
比較演算子とは
C#の比較演算子とは、演算子の左辺と右辺を比較する演算子のことです。等しいか否かの判定や、大小の判定のために使用します。そして、判定結果として真(True)か偽(False)の値が返却されます。
比較演算子は、ソースコードの条件分岐(if文)内でよく使用します。比較演算子は関係演算子とも呼ばれています。C#の比較演算子は、整数と浮動小数点のすべての数値型でサポートされています。
比較演算子の種類
C#の比較演算子には以下の種類があります。
・等値演算子 ==
演算子の左辺と右辺が等しいかを判定します。等しい場合True、等しくない場合Falseを返却します。
・非等値演算子 !=
演算子の左辺と右辺が異なるかを判定します。等しくない場合True、等しい場合Falseを返却します。
・小なり演算子 < 演算子の左辺が右辺よりも小さいかを判定します。左辺が右辺未満の場合True、左辺が右辺以上の場合Falseを返却します。 ・大なり演算子 >
演算子の左辺が右辺よりも大きいかを判定します。左辺が右辺より大きい場合True、左辺が右辺以下の場合Falseを返却します。
・以下演算子 <= 演算子の左辺が右辺以下かを判定します。左辺が右辺以下の場合True、左辺が右辺よりも大きい場合Falseを返却します。 ・以上演算子 >=
演算子の左辺が右辺以上かを判定します。左辺が右辺以上の場合True、左辺が右辺よりも小さい場合Falseを返却します。
C#では、比較演算子の他にも以下のような「算術演算子」などもあります。
算術演算子には、例えば以下のようなものがあります。
・乗算演算子 *
・除算演算子 /
・剰余演算子 %
・加算演算子 +
・減算演算子 –
この記事では、比較演算子について解説します。
それでは実際に、比較演算子の挙動を確認するためのサンプルコードを見ていきましょう。
1 2 3 4 5 6 7 8 9 |
int n1 = 3; int n2 = 5; System.Console.WriteLine(""{0} == {1}:{2}"", n1, n2, n1 == n2); // 等値演算子 System.Console.WriteLine(""{0} != {1}:{2}"", n1, n2, n1 != n2); // 非等値演算子 System.Console.WriteLine(""{0} < {1}:{2}"", n1, n2, n1 < n2); // 小なり演算子 System.Console.WriteLine(""{0} > {1}:{2}"", n1, n2, n1 > n2); // 大なり演算子 System.Console.WriteLine(""{0} <= {1}:{2}"", n1, n2, n1 <= n2); // 以下演算子 System.Console.WriteLine(""{0} >= {1}:{2}"", n1, n2, n1 >= n2); // 以上演算子 |
実行結果は以下のようになります。
1 2 3 4 |
3 == 5:False 3 != 5:True 3 < 5:True 3 > 5:False 3 <= 5:True 3 >= 5:False |
n1とn2の関係から、このような実行結果になることが分かります。
double型やchar型の比較
先ほどのC#のサンプルプログラムでは整数型の比較を行いました。
比較演算子は、double型などの実数型もサポートしています。
それではdouble型のプログラムで確認してみましょう。
1 2 3 4 5 6 7 8 9 |
double n1 = 3.0; double n2 = 5.0; System.Console.WriteLine(""{0} == {1}:{2}"", n1, n2, n1 == n2); // 等値演算子 System.Console.WriteLine(""{0} != {1}:{2}"", n1, n2, n1 != n2); // 非等値演算子 System.Console.WriteLine(""{0} < {1}:{2}"", n1, n2, n1 < n2); // 小なり演算子 System.Console.WriteLine(""{0} > {1}:{2}"", n1, n2, n1 > n2); // 大なり演算子 System.Console.WriteLine(""{0} <= {1}:{2}"", n1, n2, n1 <= n2); // 以下演算子 System.Console.WriteLine(""{0} >= {1}:{2}"", n1, n2, n1 >= n2); // 以上演算子 |
この場合、実行結果は以下のようになります。
1 2 3 4 |
3 == 5:False 3 != 5:True 3 < 5:True 3 > 5:False 3 <= 5:True 3 >= 5:False |
このようにdouble型でも比較できます。
では、int型とdouble型を比較するとどうなるでしょうか。
1 2 3 4 5 6 7 8 9 |
int n1 = 5; double n2 = 5.1; System.Console.WriteLine(n1 == n2); // 等値演算子 System.Console.WriteLine(n1 != n2); // 非等値演算子 System.Console.WriteLine(n1 < n2); // 小なり演算子 System.Console.WriteLine(n1 > n2); // 大なり演算子 System.Console.WriteLine(n1 <= n2); // 以下演算子 System.Console.WriteLine(n1 >= n2); // 以上演算子 |
このように記述してもコンパイルエラーになりません。
この場合、実行結果は以下のようになります。
1 2 3 4 5 6 |
False True True False True False |
doubleにキャストされて比較されていることが分かります。
コンパイルエラーにこそなりませんが、異なる型の比較は予期せぬ不具合を誘発する可能性がありますので、あまりお勧めしません。
意図した型で比較するようにしましょう。
次にchar型を比較してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
char n1 = 'a'; char n2 = 'c'; System.Console.WriteLine((int)n1); // n1 System.Console.WriteLine((int)n2); // n2 System.Console.WriteLine(""{0} == {1}:{2}"", n1, n2, n1 == n2); // 等値演算子 System.Console.WriteLine(""{0} != {1}:{2}"", n1, n2, n1 != n2); // 非等値演算子 System.Console.WriteLine(""{0} < {1}:{2}"", n1, n2, n1 < n2); // 小なり演算子 System.Console.WriteLine(""{0} > {1}:{2}"", n1, n2, n1 > n2); // 大なり演算子 System.Console.WriteLine(""{0} <= {1}:{2}"", n1, n2, n1 <= n2); // 以下演算子 System.Console.WriteLine(""{0} >= {1}:{2}"", n1, n2, n1 >= n2); // 以上演算子 |
この場合、実行結果は以下のようになります。
1 2 3 4 5 6 |
97 99 a == c:False a != c:True a < c:True a > c:False a <= c:True a >= c:False |
char型の場合は、対応する文字コードが比較されます。
このように、C#ではint型だけでなく、double型やchar型についても比較することができます。
NaNとの比較
それでは、数字以外ものと比較するとどうなるでしょうか。
1 2 3 4 5 6 7 8 9 |
double n1 = double.NaN; double n2 = 5.0; System.Console.WriteLine(""{0} == {1}:{2}"", n1, n2, n1 == n2); // 等値演算子 System.Console.WriteLine(""{0} != {1}:{2}"", n1, n2, n1 != n2); // 非等値演算子 System.Console.WriteLine(""{0} < {1}:{2}"", n1, n2, n1 < n2); // 小なり演算子 System.Console.WriteLine(""{0} > {1}:{2}"", n1, n2, n1 > n2); // 大なり演算子 System.Console.WriteLine(""{0} <= {1}:{2}"", n1, n2, n1 <= n2); // 以下演算子 System.Console.WriteLine(""{0} >= {1}:{2}"", n1, n2, n1 >= n2); // 以上演算子 |
上記のサンプルコード内の「NaN」は非数(Not a Number)を意味します。
実行結果は以下のようになります。
1 2 3 4 |
NaN == 5:False NaN != 5:True NaN < 5:False NaN > 5:False NaN <= 5:False NaN >= 5:False |
NaN(n1)とn2は異なりますので、等値演算の結果はFalse、非等値演算の結果はTrueとなります。
非数については、大小の比較ができません。そのため、結果はすべてFalseとなります。
整数以外にも様々な型の比較が行えるのですね。
C#の比較演算子について理解しよう
この記事では、C#の比較演算子について説明しました。比較演算子の左辺と右辺を比較する際に使用するのが比較演算子で、等値の判定や大小の判定を行います。比較演算子ではint型だけでなく、double型・char型の比較も行えます。
C#では比較演算子以外にも、「算術演算子」などの演算子があります。興味がある方はあわせて学んでみてはいかがでしょうか。