名前空間
変種

提供: cppreference.com
 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (C++20未満)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
ラベル
label : statement
式文
expression ;
複文
{ statement... }
選択文
if
switch
繰り返し文
while
do-while
for
範囲 for(C++11)
ジャンプ文
break
continue
return
goto
宣言文
declaration ;
try ブロック
try compound-statement handler-sequence
トランザクショナルメモリ
synchronized, atomic_commit など(TM TS)
 

文は順番に実行される C++ プログラムの断片です。 あらゆる関数の本体は文の並びです。 例えば、

int main()
{
    int n = 1;                        // 宣言文
    n = n + 1;                        // 式文
    std::cout << "n = " << n << '\n'; // 式文
    return 0;                         // return 文
}

C++ には以下の種類の文があります。

1) 式文
2) 複文
3) 選択文
4) 繰り返し文
5) ジャンプ文
6) 宣言文
7) try ブロック
8) atomic および synchronized ブロック (TM TS)

ラベル

あらゆる文は、文そのものの前にラベルとコロンを置くことによって、ラベル付けすることができます。

attr(オプション) identifier : statement (1)
attr(オプション) case constexpr : statement (2)
attr(オプション) default : statement (3)
1) goto のためのターゲット
2) switch 文の case ラベル
3) switch 文の default ラベル

属性の並び attr はラベルの直前 (この場合、属性はそのラベルに適用されます) または任意の文そのものの直前 (この場合、属性は文全体に適用されます) に現れることができます。 ひとつの文に複数のラベルを付けることができます。 ラベルは (そしてラベルのみが) 関数スコープを持ちます。 非修飾名の名前探索はラベルを無視します。 ラベルはプログラム内の任意の他のエンティティと同じ名前を持つことができます。

式文

式にセミコロンが続いたものは文です。

attr(オプション) expression(オプション) ; (1)
attr(C++11) - オプショナルな任意個の属性の並び
expression -

一般的な C++ プログラムのほとんどの文は、代入や関数呼び出しなどの式文です。

式のない式文は空文と呼ばれます。 これは forwhile ループに空の本体を与えるためによく使用されます。 また複文の終わりにラベルを置くためにも使用することができます。

複文

複文、またはブロックは、波括弧で囲まれた文の並びです。

attr(オプション) { statement...(オプション) } (1)

ひとつの文が期待されるけれども複数の文を順に実行する必要があるとき (例えば if 文やループなどで)、複文が使用できます。

if (x > 5)          // if 文の始まり
{                   // ブロックの始まり
    int n