C 데이터 유형


C 언어에서 데이터 유형은 다양한 유형의 변수나 함수를 선언하기 위한 광범위한 시스템을 나타냅니다. 변수 유형에 따라 변수 저장소가 차지하는 공간과 저장된 비트 패턴이 해석되는 방식이 결정됩니다.

C의 유형은 다음 유형으로 나눌 수 있습니다:

일련 번호 유형 및 설명
1기본 유형:
두 가지 유형을 포함하는 산술 유형입니다: 정수 유형 및 부동 소수점 유형.
2열거 유형:
또한 산술 유형이며 프로그램에서 특정 이산 정수 값만 할당할 수 있는 변수를 정의하는 데 사용됩니다.
3void 유형:
유형 지정자 void는 사용할 수 있는 값이 없음을 나타냅니다.
4파생 유형:
파생 유형에는 포인터 유형, 배열 유형, 구조 유형, 공용체 유형 및 함수 유형이 포함됩니다.

배열 유형과 구조 유형을 총칭하여 집계 유형이라고 합니다. 함수 유형은 함수의 반환 값 유형을 나타냅니다. 이 장의 나머지 부분에서는 기본 유형을 소개하고 다음 장에서는 몇 가지 다른 유형에 대해 설명합니다.

정수 유형

다음 표에는 표준 정수 유형의 저장 크기 및 값 범위에 대한 세부 정보가 나열되어 있습니다.

-128~127 또는 0~255
부호 없는 문자1바이트 0~255
부호 있는 문자1바이트 -128~127
int2 또는 4바이트 -32,768 ~ 32,767 또는 -2,147,483,648 ~ 2,147,483,647
unsigned int2 또는 4바이트 0 ~ 65,535 또는 0 ~ 4,294,967,2 95
short2바이트- 32,768 ~ 32,767
unsigned short2바이트0 ~ 65,535
long4바이트-2,147,483,648 ~ 2,147,483,6 47
unsigned long4바이트0~4,294,967,295

다양한 유형의 저장소 크기는 시스템 비트 수와 관련이 있지만 현재 가장 일반적인 것은 64비트 시스템입니다.

다음은 32비트 시스템과 64비트 시스템 간의 저장소 크기 차이를 나열합니다(Windows에서도 동일).

특정 플랫폼에서 특정 유형이나 변수의 정확한 크기를 얻으려면, sizeof 연산자를 사용할 수 있습니다. sizeof(type) 표현식은 객체 또는 유형의 저장 크기를 바이트 단위로 가져옵니다. 다음 예에서는 int 유형의 크기를 가져오는 방법을 보여줍니다.

#include <stdio.h>#include <limits.h>int main(){
   printf("int 存储大小 : %lu \n", sizeof(int));   
   return 0;}

Linux에서 위 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

int 存储大小 : 4

부동 소수점 유형

다음 표에는 표준 부동 소수점에 대한 정보가 나열되어 있습니다. 저장소 크기, 값 범위 및 유형 정밀도에 대한 세부정보:

typestorage sizevalue rangeprecision
float4바이트 1.2E-38 ~ 3.4E+38 소수점 6자리
double8바이트2.3E-308 ~ 1.7E+308소수점 15자리
long double16바이트3.4E -4932 ~ 1. 1 E+4932 소수점 19자리

헤더 파일 float.h는 이러한 값과 프로그램에서 실수의 이진 표현에 대한 기타 세부 정보를 사용할 수 있는 매크로를 정의합니다. 다음 예에서는 부동 소수점 유형이 차지하는 저장 공간과 해당 범위 값을 출력합니다.

#include <stdio.h>#include <float.h>int main(){
   printf("float 存储最大字节数 : %lu \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );   
   return 0;}

위 프로그램을 Linux에서 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

float 存储最大字节数 : 4 float 最小值: 1.175494E-38float 最大值: 3.402823E+38精度值: 6

void 유형

void 유형 지정 사용할 수 있는 값이 없습니다. 일반적으로 다음 세 가지 상황에서 사용됩니다.

일련 번호 유형 및 설명
1Function이 null을 반환합니다.
C에는 값을 반환하지 않는 다양한 함수가 있습니다. 빈 상태로 돌아간다고 말할 수 있습니다. 값을 반환하지 않는 함수의 반환 유형은 null입니다. 예를 들어 voidexit(int 상태);
2함수 매개변수가 비어 있습니다.
C에는 어떤 매개변수도 허용하지 않는 다양한 함수가 있습니다. 매개변수가 없는 함수는 void를 허용할 수 있습니다. 예를 들어, int rand(void);
3pointer는 void
를 가리킵니다. void * 유형의 포인터는 유형이 아닌 객체의 주소를 나타냅니다. 예를 들어, 메모리 할당 함수 void *malloc( size_t size );는 모든 데이터 유형으로 변환될 수 있는 void에 대한 포인터를 반환합니다.

지금도 void 유형을 완전히 이해할 수 없다면 너무 걱정하지 마세요. 이러한 개념은 다음 장에서 자세히 설명하겠습니다.