C 형식 지정자C Type Specifiers

선언에 있는 형식 지정자는 변수 또는 함수 선언의 형식을 정의합니다.Type specifiers in declarations define the type of a variable or function declaration.

구문Syntax

type-specifier:type-specifier:
voidvoid

charchar

shortshort

intint

longlong

floatfloat

doubledouble

signedsigned

unsignedunsigned

struct-or-union-specifierstruct-or-union-specifier

enum-specifierenum-specifier

typedef-nametypedef-name

signed char, signed int, signed short intsigned long int 형식은 상응하는 unsignedenum과 함께 "정수 계열" 형식이라고 불립니다.The signed char, signed int, signed short int, and signed long int types, together with their unsigned counterparts and enum, are called "integral" types. float, doublelong double 형식 지정자는 "부동" 또는 "부동 소수점" 형식이라고 합니다.The float, double, and long double type specifiers are referred to as "floating" or "floating-point" types. 변수 또는 함수 선언에서 정수 계열 또는 부동 소수점 형식 지정자를 사용할 수 있습니다.You can use any integral or floating-point type specifier in a variable or function declaration. type-specifier가 선언에서 제공되지 않으면 int로 간주됩니다.If a type-specifier is not provided in a declaration, it is taken to be int.

선택적 키워드 signedunsignedenum을 제외한 정수 계열 형식의 앞이나 뒤에 올 수 있으며, 형식 지정자로 단독으로 사용될 수도 있는데 이 경우 각각 signed intunsigned int로 해석됩니다.The optional keywords signed and unsigned can precede or follow any of the integral types, except enum, and can also be used alone as type specifiers, in which case they are understood as signed int and unsigned int, respectively. 단독으로 사용될 때 int 키워드는 signed로 간주되고,When used alone, the keyword int is assumed to be signed. longshortlong intshort int로 해석됩니다.When used alone, the keywords long and short are understood as long int and short int.

열거형 형식은 기본 형식으로 간주됩니다.Enumeration types are considered basic types. 열거형 형식에 대한 형식 지정자는 열거형 선언에서 설명합니다.Type specifiers for enumeration types are discussed in Enumeration Declarations.

void 키워드는 세 가지 용도가 있습니다. 함수 반환 형식을 지정하고, 인수를 사용하지 않는 함수의 인수 형식 목록을 지정하며, 지정되지 않은 형식에 대한 포인터를 지정합니다.The keyword void has three uses: to specify a function return type, to specify an argument-type list for a function that takes no arguments, and to specify a pointer to an unspecified type. void 형식을 사용하여 값을 반환하지 않는 함수를 선언하거나 지정되지 않은 형식에 대한 포인터를 선언할 수 있습니다.You can use the void type to declare functions that return no value or to declare a pointer to an unspecified type. 함수 이름 뒤의 괄호 안에 단독으로 나타나는 void에 대한 자세한 내용은 인수를 참조하세요.See Arguments for information on void when it appears alone within the parentheses following a function name.

Microsoft 전용Microsoft Specific

형식 검사는 이제 ANSI 규격이며, 이는 shortint 형식이 고유한 형식임을 의미합니다.Type checking is now ANSI-compliant, which means that type short and type int are distinct types. 예를 들어 다음은 Microsoft C 컴파일러의 이전 버전에서 허용하던 재정의입니다.For example, this is a redefinition in the Microsoft C compiler that was accepted by previous versions of the compiler.

int   myfunc();  
short myfunc();  

다음 예제에서는 다른 형식에 대한 간접 참조를 나타내는 경고도 생성합니다.This next example also generates a warning about indirection to different types:

int *pi;  
short *ps;  

ps = pi;  /* Now generates warning */  

Microsoft C 컴파일러에서는 부호의 차이에 대한 경고도 생성합니다.The Microsoft C compiler also generates warnings for differences in sign. 예:For example:

signed int *pi;  
unsigned int *pu  

pi = pu;  /* Now generates warning */  

void 형식의 식은 파생 작업에 대해 평가됩니다.Type void expressions are evaluated for side effects. 어떤 방식으로든 void 형식인 식의 존재하지 않는 값을 사용할 수 없으며, void 식을 암시적 또는 명시적 변환을 통해 void를 제외한 형식으로 변환할 수 없습니다.You cannot use the (nonexistent) value of an expression that has type void in any way, nor can you convert a void expression (by implicit or explicit conversion) to any type except void. void 식이 필요한 컨텍스트에서 다른 형식의 식을 사용하는 경우 해당 값은 무시됩니다.If you do use an expression of any other type in a context where a void expression is required, its value is discarded.

ANSI 사양을 따르려면 void*\*를 int*\*로 사용할 수 없습니다.To conform to the ANSI specification, void*\* cannot be used as int*\. *void*만 지정되지 않은 형식에 대한 포인터로 사용할 수 있습니다.Only **void\* can be used as a pointer to an unspecified type.

Microsoft 전용 종료END Microsoft Specific

Typedef 선언에 설명된 대로 typedef 선언으로 추가 형식 지정자를 만들 수 있습니다.You can create additional type specifiers with typedef declarations, as described in Typedef Declarations. 각 형식의 크기에 대한 자세한 내용은 기본 형식의 저장소를 참조하세요.See Storage of Basic Types for information on the size of each type.

참고 항목See Also

선언 및 형식Declarations and Types