【C言語入門】ifとelseをわかりやすく解説！

# 【C言語入門】ifとelseをわかりやすく解説！

:::note warn
 **注意**  
 本記事の内容には、誤った知識や古い情報が含まれている可能性があります。  
 必ず公式ドキュメントや信頼できる参考書なども併せてご確認ください。
:::
---

:::note info
 **まだC言語の開発環境ができていない方へ**  
 この記事ではC言語の`scanf`について解説していますが、**まだC言語の開発環境（コンパイラやエディタ）が整っていない方**は、まず環境構築から始めましょう。  
 特にWindowsユーザーの方は、以下の記事が参考になります。  
 [VSCodeにC言語の開発環境を構築するには？（Qiita）](https://qiita.com/Ayanokoji/items/60b6873c3bc00084eeba)  
  
 この記事では、**Visual Studio Code（VSCode）とMinGW**を使ったC言語開発環境の作り方が、初心者向けに丁寧に解説されています。  
  
 **環境構築が完了したら、この記事の内容を参考にC言語のプログラムを書いてみましょう！**
:::
C言語を学び始めたばかりの方が必ず出会う「if文」と「else文」。  
「条件によって処理を分ける」ための、とても大切な文法です。  
この記事では、if文・else文の基本から、よくある間違い、実践例まで、**完全初心者向け**にやさしく解説します！

---

## if文・else文ってなに？

if文は、「もし○○なら、△△する」という**条件分岐**をプログラムで書くためのものです。  
else文は、「そうでなければ□□する」と、条件に当てはまらなかった場合の処理を追加できます。

### 例え話

- if文は「もし雨が降ったら傘を持っていく」
- else文は「そうでなければ傘はいらない」

このように、**状況によってやることを変えたいとき**に使います。

---

## if文の基本的な書き方

```c
if (条件) {
    // 条件が「真（true）」のときに実行される処理
}
```

### サンプル：60点以上なら「合格」と表示

```c:sample1.c
#include <stdio.h>

int main() {
    int score = 70;
    if (score >= 60) {
        printf("合格です！\n");
    }
    return 0;
}
```

**解説**  
- `score >= 60` が「真」なら、`printf`の行が実行されます。
- 70は60以上なので、「合格です！」と表示されます。

---

## else文の使い方

if文だけだと「条件に当てはまらない場合」の処理が書けません。  
else文を使うと「そうでない場合」の処理も書けます。

```c
if (条件) {
    // 条件が真のとき
} else {
    // 条件が偽（false）のとき
}
```

### サンプル：合格・不合格を判定

```c:sample2.c
#include <stdio.h>

int main() {
    int score = 55;
    if (score >= 60) {
        printf("合格です！\n");
    } else {
        printf("不合格です。\n");
    }
    return 0;
}
```

**解説**  
- scoreが60未満なので、elseの中が実行され「不合格です。」と表示されます。

---

## else ifで条件を増やす

複数の条件を順番に判定したいときは、`else if`を使います。

```c
if (条件1) {
    // 条件1が真
} else if (条件2) {
    // 条件2が真
} else {
    // どれにも当てはまらない場合
}
```

### サンプル：成績をランク分け

```c:sample3.c
#include <stdio.h>

int main() {
    int score = 85;
    if (score >= 80) {
        printf("とても良い！\n");
    } else if (score >= 60) {
        printf("合格です！\n");
    } else {
        printf("不合格です。\n");
    }
    return 0;
}
```

**解説**  
- scoreが85なので、最初のifが「真」となり「とても良い！」と表示されます。

---

## よくある間違い・注意点

### 1. ifやelseの後ろに「;（セミコロン）」を付けない

```c:bad1.c
if (score >= 60); // ← ここにセミコロンを付けるとダメ！
{
    printf("合格です！\n");
}
```
このように書くと、if文の意味がなくなってしまいます。

### 2. 波かっこ `{}` を省略しない

1行だけなら省略できますが、**初心者は必ず波かっこを付けましょう**。

### 3. `=`と`==`の違いに注意

- `=` は「代入」
- `==` は「等しいかどうかの比較」

```c:bad2.c
if (score == 100) { // 100点ちょうどのとき
    printf("満点です！\n");
}
```

---

## 実践例：ユーザーから点数を入力して判定

実際にキーボードから点数を入力して、成績を判定するプログラムを作ってみましょう。

```c:practice.c
#include <stdio.h>

int main() {
    int score;
    printf("点数を入力してください: ");
    if (scanf("%d", &score) != 1) {
        printf("入力エラーです。\n");
        return 1;
    }

    if (score >= 80) {
        printf("とても良い！\n");
    } else if (score >= 60) {
        printf("合格です！\n");
    } else {
        printf("不合格です。\n");
    }
    return 0;
}
```

---

### 入力例と出力例

**入力例**  
75

**出力例**  
合格です！


この記事を最後までご覧いただきありがとうございました。  
if文・else文はC言語の基礎中の基礎です。  
ぜひ実際に手を動かして、いろいろな条件分岐を試してみてください。

この記事はC言語を学び始めた友人のために執筆したものです。  
今後も内容の更新や加筆を気が向いたときに行う予定です。

---
:::note info
## 関連記事

- [【C言語入門】合計と平均を求める方法をわかりやすく解説！](https://qiita.com/Ayanokoji/items/33e46865e6b83b76076a)
- [【C言語入門】scanfってなに？初心者向けにわかりやすく解説！](https://qiita.com/Ayanokoji/items/b6747e69f5668a28897a)
:::