次の方法で共有


複合ステートメント (C)

複合ステートメント ("ブロック" とも呼ばれます) は、通常、 if ステートメントなどの別のステートメントの本文として表示されます。 宣言と型 は、複合ステートメントの先頭に表示できる宣言の形式と意味を記述します。

構文

compound-statement:
{ declaration-list optstatement-list選ぶ}

declaration-list:
declaration
declaration-list declaration

statement-list:
statement
statement-list statement

宣言がある場合は、ステートメントの前に記述する必要があります。 複合ステートメントの先頭で宣言された各識別子のスコープは、その宣言ポイントからブロックの末尾まで拡張されます。 同じ識別子の宣言が内部ブロックに存在しない限り、ブロック全体で表示されます。

複合ステートメント内の識別子は、registerstatic、またはexternを使用して明示的に宣言されていない限り、autoと見なされます。ただし、externできる関数は除きます。 関数宣言では extern 指定子を無効にしておくことができますが、関数は引き続き externされます。

ストレージ クラスが externされた複合ステートメントで変数または関数が宣言されている場合、ストレージは割り当てられず、初期化も許可されません。 宣言は、他の場所で定義されている外部変数または関数を参照します。

autoキーワードまたはregisterキーワードを使用してブロックで宣言された変数は再割り当てされ、必要に応じて複合ステートメントが入力されるたびに初期化されます。 複合ステートメントが終了した後、これらの変数は定義されなくなりました。 ブロック内で宣言された変数に static 属性がある場合、変数はプログラムの実行開始時に初期化され、プログラム全体でその値が保持されます。 staticの詳細については、ストレージ クラスを参照してください。

次の例は、複合ステートメントを示しています。

if ( i > 0 )
{
    line[i] = x;
    x++;
    i--;
}

この例では、 i が 0 より大きい場合、複合ステートメント内のすべてのステートメントが順番に実行されます。

こちらも参照ください

ステートメント