C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++プログラムで閉じ波括弧(})の後にセミコロンが必要になるのはいつか?

閉じ波括弧(})の後にセミコロンが必須となるケース

C++では、閉じ波括弧(})の直後が宣言の終わりに当たる場合、セミコロン(;)が必須となります。波括弧が使われる主な場面は、classenumstruct の宣言や、初期化構文(配列やオブジェクトの初期化)です。これらの宣言文の末尾には、必ずセミコロンを付ける必要があります。

セミコロンが必要な例

class X {};    // struct の場合も同様
enum Y {};
int z[] = {1,2};

上記のように、クラスや列挙型の宣言、配列の初期化リストでは、閉じ波括弧の後にセミコロンを忘れるとコンパイルエラーになるため注意しましょう。

セミコロンが不要なケースと「空文」としての性質

一方で、if 文や for 文などの制御構文で使われる波括弧の後には、セミコロンは不要です。これらは宣言ではなく文(ステートメント)であるためです。

ただし、セミコロン単体は「空文(null statement)」として扱われ、構文上ステートメントが許可される場所であれば、どこにでも追加できます。そのため、if 文の閉じ波括弧の直後にセミコロンを置いても文法的には合法ですが、そのセミコロンは if 文とは何の関係もない、単なる空の文として解釈されます。

if (condition) {
    // 処理
};  // 合法だが、このセミコロンは空文として独立している

このような余分なセミコロンは動作に影響しないことが多いものの、可読性を下げるため、通常は書かないのが良いスタイルとされています。

まとめ

  • classstructenum の宣言や初期化リストの閉じ波括弧の後 → セミコロン必須
  • ifforwhile などの制御構文の閉じ波括弧の後 → セミコロン不要
  • 単体のセミコロンは空文として有効だが、余分に付けるのは避けるのが望ましい
  1. C++プログラムにおける二分探索(バイナリサーチ)の基本と実装

    二分探索(バイナリサーチ)とは二分探索は「半区間探索」「対数探索」「バイナリチョップ」とも呼ばれる検索アルゴリズムで、ソート済みの配列の中から目的の値が存在する位置を効率的に見つけ出します。基本的な仕組みは非常にシンプルです。まず、探したい値(ターゲット値)を配列の中央の要素と比較します。一致しなかった場合は、ターゲット値が存在し得ない半分を丸ごと排除し、残りの半分に対して同様の比較を繰り返します。この「中央との比較」と「範囲の絞り込み」を続け、ターゲット値が見つかるか、検索範囲が空になる(=配列にその値が存在しない)かのどちらかで処理が終了します。アイデア自体は簡単ですが、正しく実装するには

  2. C++の「Hello, World!」プログラム徹底解説|初心者向けに各構成要素をやさしく説明

    C++は、手続き型プログラミング、オブジェクト指向プログラミング、ジェネリック(総称)プログラミングをサポートする汎用プログラミング言語です。C++はC言語のスーパーセット(上位互換)であり、有効なC言語のプログラムはそのままC++でもコンパイルして実行できます。また、C++にはデータ隠蔽、カプセル化、継承、ポリモーフィズム(多態性)といったオブジェクト指向プログラミングの重要な機能が備わっています。それでは、画面に「Hello, World!」と表示する最初のC++プログラムを見ていきましょう。サンプルプログラム#include <iostream> using namespac