比較演算子には、以下のものがある。
|
これらの比較演算子を使って、if 文を書くと例えば、
例 2
a = 10;
b = 34;
if (a > b){
printf("a > b \n");
}
|
のように数学的な記号と同じ感覚で書くことが出来る。
( ちなみに上の例では a > b は、間違っているので、printf
は実行されない。 )
例 3 よくやる間違い
a = 10;
b = 34;
if (a = b){
printf("a == b \n");
}
|
この例は文法的には間違っていないが、良くやる間違いの一つである。
どこが間違っているかというと、if の条件文が、比較演算の
では
なく、代入演算の
になっている点にある。本来ならば、
なの
で、
と
とは異なっており、if 文の中は実行されない筈であるが、
実はこの例では実行されてしまう。比較演算の
を代入演算の
に間違えた
だけなのだが、実は、代入演算は演算なので演算結果が存在する。代入演算の
結果は代入した値になるという決まりなので、
の結果は、
が
より
になる。これは、0ではないので、この代入演算の結果は真と判断される
訳である。
参考 先に述べたように、C 言語では実は代入は演算なのである。演算である
という事は結果があるという事を意味する。例えば、掛け算は演算であるので、
3 * 4 には 12 という結果がある。これと同じように、代入演算
にも結果があり、代入の結果は代入した値という決まりになっている。例えば、
a=3 という代入の結果は、3 となる。これは、複雑なようだが、
次のような実は素晴らしい使いみちがあるので、あえてこうなっているのである。
その使いみちとは、a = b = 3 という書き方が C 言語では可能な事である。
この文によって、変数 a, b の両方に 3 が代入されるのである。
即ち、a = b * 3 ならば、b * 3 の結果が a に代入される
のと同じように、a = b = 3 は、b = 3 の結果が a に
代入されるのである。