この章のテーマ §
大小関係や一致などを判定する演算子<,>,<=,>=,==,!=を学びます。
前提知識 §
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");
- "AB" + "CD"と"ABCD"は一致していないのだから、一致しないことを示すFalseを出力する
- "AB" + "CD"の結果は"ABCD"になるので、一致する。一致していることを示すTrueを出力する
- 一致しないものを比較したので、実行時例外
- そもそも構文がおかしいので、コンパイルエラー
- 歴史の教科書のABCD包囲網のページを表示する
[[解答]]