2021年12月02日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説! total 918 count

比較演算子: 大きいことは良いことだ・大小判定自由自在

Written By: 川俣 晶連絡先

この章のテーマ §

 大小関係や一致などを判定する演算子<,>,<=,>=,==,!=を学びます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, int型, float型, string型, while文

解説 §

 比較演算子(条件演算子)は、2つの値の大小、あるいは一致、不一致を判定します。

 たとえは、if( a>b )のように書いた時の>がそれに該当します。

 比較演算子には以下のバリエーションが存在します。

  • a<b aよりbが大きい
  • a>b aよりbが小さい
  • a<=b aよりbが大きいか同じ
  • a>=b aよりbが小さいか同じ
  • a==b aとbは同じ
  • a!=b aとbは同じではない

 ≦≧≠などの記号は、アメリカでよく使われるASCIIコードと呼ばれる文字セットに含まれていないので、使用されません。その代わり、<=. >=, !=が使用されます。

 また、=は代入と役割が紛らわしいので、一致判定は==と2文字で記述します。

罠の数々 §

  • これらの演算子は、実は判定ではなく計算を行っている。結果の型はbool型で返される。条件が成立するとTrueになる。だから結果をbool型の変数に入れることもできる
  • 文字列は、通常、一致と不一致しか判定できない
  • floatなどの浮動小数点型の値NaN(Not a Number/非数)は、どんな判定をしても常に結果不成立(False)となる。サンプルソースの変数fを参照
  • >と>=、<と<=は間違いやすいので注意しよう。繰り返しの判定で間違って使うと繰り返す回数が1回変わってしまうこともある。サンプルソースの変数bと変数cを参照

参考リンク §

比較演算子 (C# リファレンス)

サンプルソース: condition §

int a = 1;

while (a == 1)

{

    Console.WriteLine($"a={a}");

    a = 2;

}

int b = 1;

while (b < 2)

{

    Console.WriteLine($"b={b}");

    b = b + 1;

}

int c = 1;

while (c <= 2)

{

    Console.WriteLine($"c={c}");

    c = c + 1;

}

float f = float.NaN;

Console.WriteLine($"f==0.0: {f==0.0}");

Console.WriteLine($"f>0.0: {f > 0.0}");

Console.WriteLine($"f<0.0: {f < 0.0}");

string s = "BURN";

Console.WriteLine($"s == \"BURN\": {s == "BURN"}");

Console.WriteLine($"s != \"BURN\": {s != "BURN"}");

実行結果 §

a=1

b=1

c=1

c=2

f==0.0: False

f>0.0: False

f<0.0: False

s == "BURN": True

s != "BURN": False

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

Console.WriteLine("AB" + "CD" == "ABCD");

  1. "AB" + "CD"と"ABCD"は一致していないのだから、一致しないことを示すFalseを出力する
  2. "AB" + "CD"の結果は"ABCD"になるので、一致する。一致していることを示すTrueを出力する
  3. 一致しないものを比較したので、実行時例外
  4. そもそも構文がおかしいので、コンパイルエラー
  5. 歴史の教科書のABCD包囲網のページを表示する

[[解答]]

単行本情報