C言語の条件(三項)演算子(? :)の使い方を完全ガイド!初心者でもわかる基本と例
生徒
「C言語の演算子を勉強していたら、条件演算子って言葉を見つけました。これは何に使うんですか?」
先生
「条件演算子は、C言語の中でとても便利な演算子で、三項演算子とも呼ばれます。」
生徒
「三項ってことは、三つの要素を使う演算子なんですね?」
先生
「そうです。条件を判定して、結果によって値を選ぶことができます。if文とよく似ていますが、短く書けるため便利なんです。」
1. 条件(三項)演算子(? :)とは?
C言語には非常に多くの演算子があります。その中でも、条件に応じて結果を切り替えるときに便利なのが、条件(三項)演算子です。書き方は少し特殊ですが、慣れるととても読みやすくなります。条件演算子は、次のような形で使います。
条件式 ? 真の場合の値 : 偽の場合の値
この一文で、if文のような条件判定が行えます。プログラムの中で短い条件分岐をしたいときに、コードが読みやすくなるので、C言語の学習者にも人気のある書き方です。
2. if文との違いをやさしく解説
条件演算子は、if文と同じように条件を判定できます。しかし、if文は複数行になるのに対し、条件演算子は一行で書けます。同じ処理を比較してみると、違いがわかりやすいです。
例えば「変数aが0より大きいなら真、そうでなければ偽」と判定したいとき、if文では次のようになります。
int a = 5;
if(a > 0)
{
printf("真です\n");
}
else
{
printf("偽です\n");
}
この処理を条件演算子で書くと、たった一行で同じ結果になります。
int a = 5;
printf(a > 0 ? "真です\n" : "偽です\n");
文章として読むと、「aが0より大きいなら真です、そうでなければ偽です」という意味になります。プログラムの見た目がすっきりし、簡単な条件判定であればとても読みやすくなるため、条件演算子はC言語の定番テクニックです。
3. 実際に条件演算子を使ってみよう
ここでは、変数の値を見て結果を切り替える例を紹介します。初心者でも理解しやすいように、数字を判定するシンプルなサンプルにしました。
#include <stdio.h>
int main(void)
{
int score = 80;
char *result;
result = (score >= 60) ? "合格" : "不合格";
printf("結果は %s です\n", result);
return 0;
}
このプログラムでは、整数のscoreが60以上であれば「合格」、60より小さければ「不合格」という文字が変数resultに代入されます。
結果は 合格 です
条件演算子は、数値だけでなく文字列や変数にも使えるため、C言語のプログラムでとても応用範囲が広いです。
4. 条件演算子を使うと読みやすくなる例
プログラムが複雑になると、if文が並んで読みづらくなることがあります。そんなとき、簡単な分岐なら条件演算子に置き換えることで、短く整理されたコードになります。
例えば、整数が偶数か奇数かを判定する処理を考えます。
int num = 7;
printf((num % 2 == 0) ? "偶数です\n" : "奇数です\n");
この例では、numを2で割った余りが0なら偶数、そうでなければ奇数と表示します。一行で処理できるので、プログラム全体の見通しが良くなり、C言語のコード管理がやさしくなります。
5. 入力された値で条件を切り替える例
さらに応用として、ユーザーから入力された値によって表示を変えるサンプルも紹介します。コンピューターの仕組みが分からない人でも、ここで操作の流れをイメージしやすくなるはずです。
#include <stdio.h>
int main(void)
{
int age;
printf("年齢を入力してください:");
scanf("%d", &age);
printf("%s\n", (age >= 20) ? "成人です" : "未成年です");
return 0;
}
年齢を入力してください:18
未成年です
このように、現実の判断をプログラムにすることで、初心者でもC言語が何をしているか想像しやすくなります。
6. 三項演算子の読み方と注意点
条件演算子は便利ですが、使いすぎると逆に読みづらくなることがあります。特に長い条件や複雑な処理を一行に詰め込みすぎると、プログラムを理解しづらくなるので、短い分岐に使うのが理想的です。
C言語の学習では、if文と条件演算子を状況によって使い分けることが大切です。短く書きたいときは条件演算子、複雑な処理はif文という考え方が初心者には分かりやすい方法です。