일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- vertex
- RenderTargetView
- 다이렉트 초기화
- Direct Init
- 다이렉트X 튜토리얼
- 전처리문
- Direct3D Init
- Direct3D
- GPU
- CPU
- C++
- DESC
- swapchain
- 다중표본화
- View
- UE4
- DirectX12
- CommandList
- 프로그래밍
- engine
- DirectXTK
- DirectX
- c
- 코딩
- 세팅
- C언어
- 게임수학
- Input Assembler
- 동기화
- 다이렉트X
- Today
- Total
비타Cpp
C의 기본 타입들..(1) 본문
c에서 사용되는 기본 타입들이 있습니다.
크게는 실수형과 정수형으로 나눠집니다.
정수형은 또 char, short, int, long .. 등으로 나눠지고
실수형도 float, double..등으로 나눠집니다.
이렇게 타입들이 나눠지는 이유는 각 타입마다 표현할수 있는 수의 범위가 존재하기 때문입니다.
메모리는 한정되어 있으니 그 메모리로 표현할수 있는 수도 한계가 있고 그점을 효율적으로 관리 하기 위해서는 약속이 필요한것입니다.
정수형 부터 알아보겠습니다.
정수형은 말그대로 정수를 나타내는 타입입니다.
소수점이 없고 부호가 존재하기도 하는 수입니다.
정수형 타입의 크기순서대로 나열해보면
char
short
int
long
이렇게 나눠집니다.
타입에는 범위가 존재한다고 말씀드렸는데 크기는 char < short < int < long 입니다.
이러한 범위는 데이터형이 저장되는 메모리의 크기가 정해져 있기때문입니다.
자료형 | 크기 | 범위 |
char | 1byte | -128 ~ 127 |
short | 2byte | -32,768 ~ 32,767 |
int | 4byte | -2,147,483,648 ~ 2,147,483,647 |
long | 4byte | -2,147,483,648 ~ 2,147,483,647 |
여기서 int와 long의 크기와 범위가 같아보이는데 이는 OS의 시스템 연산단위와 관련이 있습니다.
int long
16bit 환경 2byte 4byte
32bit 환경 4byte 4byte
64bit 환경 4byte 8byte
코드에서도 확인 해보겠습니다.
#include <stdio.h>
#include <limits.h>
int main()
{
printf("정수형 타입의 크기\n");
printf("_______________________________________\n");
printf("char의 크기 : %d byte\n",sizeof(char));
printf("short의 크기 : %d byte\n", sizeof(short));
printf("int의 크기 : %d byte\n",sizeof(int));
printf("long의 크기 : %d byte\n", sizeof(long));
printf("\n정수형 타입의 범위\n");
printf("_______________________________________\n");
printf("char의 범위 : %d ~ %d\n", CHAR_MIN, CHAR_MAX);
printf("short의 범위 : %d ~ %d\n",SHRT_MIN, SHRT_MAX );
printf("int의 범위 : %d ~ %d\n", INT_MIN,INT_MAX);
printf("long의 범위 : %d ~ %d\n", LONG_MIN,LONG_MAX);
return 0;
}
limits.h에는 각종 타입들의 최소값과 최대값들이 정의 되어 있습니다.
그리고 sizeof()라는 함수는 괄호 안에 있는 타입의 크기를 byte단위의 수로 반환해줍니다.
코드를 실행해보면,
이렇게 크기와 범위가 출력 됩니다.
그리고 정수형 타입 앞에는 unsigned, signed라는 부호도 나타낼수 있습니다.
따로 명시를 하지 않을경우 암묵적으로 signed(부호가 있는)타입이 됩니다.
unsigned로 선언할 경우 수의 범위에서 음수부가 없어지므로 0부터 시작하여 없어진 음수부 만큼 양수부를 더 표현이 가능해집니다.
자료형 | 크기 | 범위 |
unsigned char | 1byte | 0 ~ 255 |
unsigned short | 2byte | 0 ~ 65,535 |
unsigned int | 4byte | 0 ~ 4,294,967,295 |
unsigned long | 4byte | 0 ~ 4,294,967,295 |
int main()
{
printf("정수형 타입의 크기\n");
printf("_______________________________________\n");
printf("char의 크기 : %d byte\n",sizeof(char));
printf("short의 크기 : %d byte\n", sizeof(short));
printf("int의 크기 : %d byte\n",sizeof(int));
printf("long의 크기 : %d byte\n", sizeof(long));
printf("\n정수형 타입의 범위\n");
printf("_______________________________________\n");
printf("char의 범위 : %d ~ %d\n", CHAR_MIN, CHAR_MAX);
printf("short의 범위 : %d ~ %d\n",SHRT_MIN, SHRT_MAX );
printf("int의 범위 : %d ~ %d\n", INT_MIN,INT_MAX);
printf("long의 범위 : %d ~ %d\n", LONG_MIN,LONG_MAX);
printf("\nUnsigned정수형 타입의 범위\n");
printf("_______________________________________\n");
printf("unsigned char의 범위 : %d ~ %d\n", 0, UCHAR_MAX);
printf("unsigned short의 범위 : %d ~ %d\n", 0, USHRT_MAX);
printf("unsigned int의 범위 : %d ~ %u\n", 0, UINT_MAX);
printf("unsigned long의 범위 : %d ~ %u\n", 0, ULONG_MAX);
return 0;
}
%d는 signed int의 범위밖에 출력이 안되므로 unsigned를 의미하는 %u를 이용해야 합니다.
출력해보면,
이렇게 unsigned 정수형의 범위와 signed 정수형의 범위의 차이를 알 수 있습니다.
'C,C++' 카테고리의 다른 글
조건문 if, if ~ else if ~ else (0) | 2019.12.02 |
---|---|
C의 기본타입들..(2) (0) | 2019.11.26 |
변수(Variable)와 상수(Constant) - (2) (0) | 2019.10.28 |
변수(Variable)와 상수(Constant) - (1) (0) | 2019.10.23 |
printf() (0) | 2019.10.21 |