복합 문 (C)Compound Statement (C)

"블록"이라고도 하는 복합 문은 일반적으로 if 문 같은 다른 문의 본문으로 나타납니다.A compound statement (also called a "block") typically appears as the body of another statement, such as the if statement. 선언 및 형식에서는 복합 문 헤드에 나타날 수 있는 선언의 형태와 의미에 대해 설명합니다.Declarations and Types describes the form and meaning of the declarations that can appear at the head of a compound statement.

구문Syntax

compound-statement:compound-statement:
{ declaration-list optstatement-listopt}{ declaration-list optstatement-listopt}

declaration-list:declaration-list:
declarationdeclaration

declaration-list declarationdeclaration-list declaration

statement-list:statement-list:
statementstatement

statement-list statementstatement-list statement

선언이 있을 경우 모든 문 앞에 와야 합니다.If there are declarations, they must come before any statements. 복합 문의 시작 지점에 선언된 각 식별자의 범위는 블록의 끝 지점까지 확장됩니다.The scope of each identifier declared at the beginning of a compound statement extends from its declaration point to the end of the block. 내부 블록에 동일한 식별자의 선언이 없는 경우 블록 전체에 표시됩니다.It is visible throughout the block unless a declaration of the same identifier exists in an inner block.

extern만 가능한 함수를 제외하고 register, static 또는 extern을 사용하여 명시적으로 선언되지 않은 복합 문의 식별자는 auto로 간주됩니다.Identifiers in a compound statement are presumed auto unless explicitly declared otherwise with register, static, or extern, except functions, which can only be extern. 함수 선언에서 extern 지정자를 해제할 수 있으며 함수는 여전히 extern입니다.You can leave off the extern specifier in function declarations and the function will still be extern.

복합 문에서 변수 또는 함수를 선언할 때 저장소 클래스 extern을 사용하지 않으면 저장소가 할당되지 않고 초기화가 허용되지 않습니다.Storage is not allocated and initialization is not permitted if a variable or function is declared in a compound statement with storage class extern. 선언은 외부 변수나 다른 곳에서 정의된 함수를 참조합니다.The declaration refers to an external variable or function defined elsewhere.

auto 또는 register 키워드를 사용하여 블록에서 선언된 변수는 다시 할당되고, 필요한 경우 복합 문이 시작될 때마다 초기화됩니다.Variables declared in a block with the auto or register keyword are reallocated and, if necessary, initialized each time the compound statement is entered. 이 변수는 복합 문이 종료된 후에는 정의되지 않습니다.These variables are not defined after the compound statement is exited. 블록 내부에서 선언된 변수에 static 특성이 있는 경우 프로그램 실행이 시작되고 프로그램 전체에 해당 값을 유지하면 변수가 초기화됩니다.If a variable declared inside a block has the static attribute, the variable is initialized when program execution begins and keeps its value throughout the program. static에 대한 자세한 내용은 저장소 클래스를 참조하세요.See Storage Classes for information about static.

다음 예제는 복합 문에 대해 설명합니다.This example illustrates a compound statement:

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

이 예제에서 i가 0보다 클 경우 복합 문 내부의 모든 문이 순서대로 실행됩니다.In this example, if i is greater than 0, all statements inside the compound statement are executed in order.

참고 항목See Also

Statements