[C言語] if文でノットイコールを使った条件分岐の方法
C言語で条件分岐を行う際に、ノットイコールを使う場合は!=演算子を使用します。
この演算子は、左辺と右辺の値が等しくないときに真(true)を返します。
例えば、if (a != b)という条件式は、変数aとbが異なる場合にブロック内のコードを実行します。
!=は比較演算子の一つで、等価性を確認する==とは逆の意味を持ちます。
条件分岐において、特定の値や状態を除外したい場合に便利です。
ノットイコール演算子!=の概要
ノットイコールの意味
ノットイコール演算子!=は、C言語において二つの値が等しくないことを確認するために使用されます。
この演算子は、条件式の中で使われ、比較する二つの値が異なる場合に真(true)を返します。
例えば、a != bという条件式は、変数aとbが異なる値を持つ場合に真となります。
!=と==の違い
!=と==はどちらも比較演算子ですが、異なる目的で使用されます。
| 演算子 | 意味 | 使用例 | 
|---|---|---|
== | 等しい | a == b | 
!= | 等しくない | a != b | 
==は、二つの値が等しいかどうかを確認します。
等しい場合に真を返します。
!=は、二つの値が等しくないかどうかを確認します。
等しくない場合に真を返します。
使用する場面
ノットイコール演算子!=は、以下のような場面で使用されます。
- 条件分岐: 特定の条件が満たされない場合に異なる処理を行いたいときに使用します。
 - ループの終了条件: ループを特定の条件が満たされるまで繰り返したい場合に使用します。
 - 入力の検証: ユーザーからの入力が特定の値と異なるかどうかを確認する際に使用します。
 
これらの場面で!=を使用することで、プログラムの流れを制御し、期待する動作を実現することができます。
ノットイコールを使った条件分岐の例
基本的な使用例
ノットイコール演算子!=を使った基本的な条件分岐の例を示します。
以下のコードは、変数aとbが異なる場合にメッセージを表示します。
#include <stdio.h>
int main() {
    int a = 5;
    int b = 10;
    // aとbが異なる場合にメッセージを表示
    if (a != b) {
        printf("aとbは異なります。\n");
    }
    return 0;
}aとbは異なります。この例では、aとbが異なるため、if文の中の処理が実行されます。
複数条件での使用
ノットイコール演算子は、他の条件と組み合わせて使用することができます。
以下の例では、aがbと異なり、かつaが0でない場合にメッセージを表示します。
#include <stdio.h>
int main() {
    int a = 5;
    int b = 10;
    // aがbと異なり、かつaが0でない場合にメッセージを表示
    if (a != b && a != 0) {
        printf("aはbと異なり、0でもありません。\n");
    }
    return 0;
}aはbと異なり、0でもありません。この例では、&&演算子を使って複数の条件を組み合わせています。
文字列比較での注意点
C言語では、文字列の比較に!=を直接使用することはできません。
文字列はポインタとして扱われるため、strcmp関数を使用して比較を行います。
以下の例では、文字列が異なるかどうかを確認します。
#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "hello";
    char str2[] = "world";
    // 文字列が異なる場合にメッセージを表示
    if (strcmp(str1, str2) != 0) {
        printf("文字列は異なります。\n");
    }
    return 0;
}文字列は異なります。この例では、strcmp関数が0以外の値を返すことで、文字列が異なることを確認しています。
!=を使って直接文字列を比較しないように注意が必要です。
応用例
ループ内でのノットイコール
ノットイコール演算子!=は、ループの終了条件としてもよく使用されます。
以下の例では、ユーザーが入力した数値が0でない限り、ループを続けます。
#include <stdio.h>
int main() {
    int number;
    // 0が入力されるまでループを続ける
    do {
        printf("数値を入力してください (0で終了): ");
        scanf("%d", &number);
    } while (number != 0);
    printf("プログラムを終了します。\n");
    return 0;
}数値を入力してください (0で終了): 5
数値を入力してください (0で終了): 3
数値を入力してください (0で終了): 0
プログラムを終了します。この例では、do-whileループを使用して、numberが0でない限り入力を受け付け続けます。
スイッチ文との組み合わせ
スイッチ文とノットイコール演算子を組み合わせることで、特定のケース以外の処理を行うことができます。
以下の例では、caseラベルに該当しない場合にデフォルトの処理を行います。
#include <stdio.h>
int main() {
    int option = 3;
    switch (option) {
        case 1:
            printf("オプション1が選択されました。\n");
            break;
        case 2:
            printf("オプション2が選択されました。\n");
            break;
        default:
            // 1でも2でもない場合
            if (option != 1 && option != 2) {
                printf("無効なオプションです。\n");
            }
            break;
    }
    return 0;
}無効なオプションです。この例では、optionが1または2でない場合にデフォルトの処理が実行されます。
関数内での条件分岐
ノットイコール演算子は、関数内での条件分岐にも利用できます。
以下の例では、引数として渡された値が特定の値と異なる場合にメッセージを表示します。
#include <stdio.h>
void checkValue(int value) {
    // valueが10でない場合にメッセージを表示
    if (value != 10) {
        printf("値は10ではありません。\n");
    } else {
        printf("値は10です。\n");
    }
}
int main() {
    checkValue(5);
    checkValue(10);
    return 0;
}値は10ではありません。
値は10です。この例では、checkValue関数が引数valueをチェックし、10でない場合に異なるメッセージを表示します。
関数内での条件分岐により、コードの再利用性が向上します。
まとめ
この記事では、C言語におけるノットイコール演算子!=の基本的な使い方から応用例までを詳しく解説しました。
ノットイコール演算子を用いることで、条件分岐やループの制御を効果的に行うことができ、プログラムの柔軟性を高めることが可能です。
これを機に、実際のプログラムで!=を活用し、より複雑な条件分岐を試してみてはいかがでしょうか。