C言語の基本概念 - 1. 論理型と演算子

論理型と論理演算

  • <stdbool.h> ヘッダーファイルをインクルードする
  • これにより bool 型および truefalse 定数が利用可能になる
  • 例1:
#include <stdio.h>
#include <stdbool.h>

int main() {
    bool b = 6 > 5;
    bool t = true;
    printf("%d\n", t);
    t = 2;
    printf("%d\n", t);
    printf("%d\n", b);
    printf("%d\n", t);
    return 0;
}

条件演算子とコンマ演算子

条件演算子(三項演算子)

  • 条件演算子の優先順位は代入演算子より高く、他の演算子より低い
  • count = (count > 20) ? count - 10 : count + 10;
  • 条件式 (count > 20) が真の場合には ? の右側の式が評価され、偽の場合は : の右側の式が評価される
  • 例1:
#include <stdio.h>
#include <stdbool.h>

int main() {
    count = (count > 20) ? count - 10 : count + 10;
    // 上記は以下のif-else構文と同等
    if (count > 20)
        count = count - 10;
    else
        count = count + 10;
}

コンマ演算子

  • 2つの式を連結し、右辺の式の値を全体の結果とする
  • コンマ演算子の優先順位は最も低いので、左右の式はそれぞれ先に計算される
  • 左から右への結合性を持つため、左側の式が最初に評価され、右側の式の値が最終的な結果となる
  • 主に for ループ内で使用される例: for (i = 0, j = 10; ; ...)
  • 例1:
#include <stdio.h>
#include <stdbool.h>

int main() {
    int i;
    i = 3 + 4, 5 + 6;
    printf("%d", i);
    return 0;
}

条件分岐の入れ子と連鎖

入れ子の if-else 文

  • if の条件が満たされるか否かに関わらず、実行される文が別の ifif-else 文であることも可能で、これは入れ子の if 文と呼ばれる
  • else は最も近い if と対応する
  • 例1:
#include <stdio.h>

int main() {
    const int ready = 24;
    int code = 0;
    int count = 0;
    scanf("%d %d", &code, &count);
    if (code == ready) {
        if (count < 20)
            printf("すべて正常です\n");
    } else
        printf("待機を続けます\n"); // 最初の if に対応
    return 0;
}

連鎖的な if-else 文

  • 分段関数などの場合に一般的に使用される
  • 例1:
#include <stdio.h>

int main() {
    int x;
    if (x < 0) {
        ...
    } else if (x == 0) {
        .....
    } else {
        .....
    }
}

多段階分岐(switch-case)

  • switch 文は条件に基づくジャンプ命令と考えられ、各 case の最後の文を実行した後、break がない限り次の case へと順次実行される
  • 例1:
#include 

int main() {
    int type;
    scanf("%d", &type);
    // switch の条件式は整数型である必要がある
    // case の後には定数または式を指定できる
    switch (type) {
        case 1:
            ...;
            break;
        case 2:
            ...;
            break;
        default:
            ...;
    }
}

タグ: C言語 論理型 条件演算子 コンマ演算子 switch文

7月18日 17:45 投稿