制御構文をマスターしよう! (2/5)
作成:2011-02-01 13:21
更新:2011-02-11 14:43
更新:2011-02-11 14:43
■条件となるもの、とは?
このif文を使うとき、最大のポイントは「条件」の書き方でしょう。条件って、そもそも何なのか? これは、C言語の場合、以下のようなものとなります。
1. 等号・不等号などを使った数字の比較
先のサンプルでは、「n % 2 == 0」という式が()内に設定されていましたね。これは「n % 2と0が等しい」ということを示す式です。こんな具合に、2つの値を比較して、等しいか等しくないか、あるいはどちらが大きいか小さいか、といった「値の比較」をする式が条件として用いられることが多いでしょう。C言語で用意されている比較の記号には以下のようなものがあります(変数AとBを比較する形でまとめてあります)。
2. ゼロか、そうでないか
数字を扱う場合、直接その数字を条件にすることもあります。C言語では、「ゼロ=正しくない」と判断されるのです。それ以外の値ならば、「正しい」と判断されます。――実を言えば、先ほどの比較の記号にしても、C言語ではその比較の結果を「ゼロかそうでないか」で返しているだけだったのです。つまり、本当はこの条件は「ゼロかどうか」ですべて決められているんですね。
この「ゼロかどうか」ということがわかっていると、例えば先程のサンプルももっとシンプルになるでしょう。下のリストのように「if (n % 2)……」とすればいいのです。これで割り切れる(つまり結果がゼロ)なら偶数、そうでなければ奇数と判断すればいいわけですね。
これで条件分岐の基本がわかりました。が、いわゆる制御構文とはちょっと違いますが、また違った形の条件分岐を行うためのものがC言語にはもう1つ用意されています。それは「条件演算子」という、演算子(計算の記号)です。
1. 等号・不等号などを使った数字の比較
先のサンプルでは、「n % 2 == 0」という式が()内に設定されていましたね。これは「n % 2と0が等しい」ということを示す式です。こんな具合に、2つの値を比較して、等しいか等しくないか、あるいはどちらが大きいか小さいか、といった「値の比較」をする式が条件として用いられることが多いでしょう。C言語で用意されている比較の記号には以下のようなものがあります(変数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と等しいか大きい
2. ゼロか、そうでないか
数字を扱う場合、直接その数字を条件にすることもあります。C言語では、「ゼロ=正しくない」と判断されるのです。それ以外の値ならば、「正しい」と判断されます。――実を言えば、先ほどの比較の記号にしても、C言語ではその比較の結果を「ゼロかそうでないか」で返しているだけだったのです。つまり、本当はこの条件は「ゼロかどうか」ですべて決められているんですね。
この「ゼロかどうか」ということがわかっていると、例えば先程のサンプルももっとシンプルになるでしょう。下のリストのように「if (n % 2)……」とすればいいのです。これで割り切れる(つまり結果がゼロ)なら偶数、そうでなければ奇数と判断すればいいわけですね。
■もっとシンプルな「条件演算子」
これで条件分岐の基本がわかりました。が、いわゆる制御構文とはちょっと違いますが、また違った形の条件分岐を行うためのものがC言語にはもう1つ用意されています。それは「条件演算子」という、演算子(計算の記号)です。
条件 ? 正しい時の値 : 正しくないときの値条件演算子は、こんな具合に記述します。これで、条件が正しいかどうかによって異なる値を取り出すことができるようになるのです。例えば、こんな具合ですね。
char* result = n >= 0 ? "OK" : "BAD";こんな具合にすると、変数nがゼロ以上なら"OK"、そうでなければ"BAD"というテキストがresultに設定されます。こんな具合に、「条件によって値を変えたい」というようなときに条件演算子は活躍します。あわせて覚えておきましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
#include <stdio.h> int main (int argc, const char * argv[]) { int n = 12345; if (n % 2) { printf("%i is odd number.",n); } else { printf("%i is even number.",n); } return 0; }
※関連コンテンツ