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
10
11
|
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
5
6
|
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
10
11
|
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
5
6
|
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
10
11
|
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
13
14
|
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
7
8
|
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
10
11
|
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
5
6
|
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#では比較演算子以外にも、「算術演算子」などの演算子があります。興味がある方はあわせて学んでみてはいかがでしょうか。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)