C/C++の基礎

条件分岐、ループ、switch

ifは条件、switchは個別case、loopは終了条件までblockを繰り返します。

条件分岐、ループ、switchとは?

ifは条件、switchは個別case、loopは終了条件までblockを繰り返します。

分岐と反復を組み合わせた例です。

重要なポイント

  • compiler warningを有効にしてすべて修正します。
  • 各値の型とlifetimeを把握します。
  • 入力と配列の境界を検証します。

CとC++のコード例

C
実行 →
main.c
#include <stdio.h>

int main(void) {
    int scores[] = {92, 71, 84};
    int total = 0;
    for (int i = 0; i < 3; ++i) total += scores[i];
    int average = total / 3;
    switch (average / 10) {
        case 10: case 9: puts("Grade A"); break;
        case 8: puts("Grade B"); break;
        default: puts("Keep practicing");
    }
    return 0;
}
期待される出力
Grade B
C++
実行 →
main.cpp
#include <iostream>
#include <vector>

int main() {
    std::vector<int> scores{92, 71, 84};
    int total = 0;
    for (int score : scores) total += score;
    switch ((total / static_cast<int>(scores.size())) / 10) {
        case 10: case 9: std::cout << "Grade A\n"; break;
        case 8: std::cout << "Grade B\n"; break;
        default: std::cout << "Keep practicing\n";
    }
}
期待される出力
Grade B

CとC++の比較

構文はほぼ共通です。常にbraceを使い、意図しないfall-throughと配列範囲外を防ぎます。

C

Cは小さな手続き型APIと表現の詳細を明示します。

C++

C++は低レベルモデルを保ちつつ安全な型を追加します。

練習課題

両方を実行して変更し、言語ごとの保証を確認します。

  • 不正入力と境界値を追加します。
  • -Wall -Wextra -Wpedanticでコンパイルします。
  • 宣言と実装を分割します。