반응형
[C/C++] 자료형의 크기 및 표현 범위
반응형
구분 | 자료형 | Byte | 범위 |
기본형 | void | 1 | - |
문자형 | (signed) char - %c | 1 | -128 ~ 127 |
unsigned char - %c | 1 | 0 ~ 255 | |
wchar_t - %c | 2 | 0 ~ 65,535 | |
정수형 | bool - %d | 1 | 0 ~ 1 |
(signed) short (int) - %d | 2 | -32,768 ~ 32,767 | |
unsigned short (int) - %d | 2 | 0 ~ 65,535 | |
(signed) int - %d | 4 8 |
32bit OS : -2^31 ~ 2^31 - 1 64bit OS : -2^63 ~ 2^63 - 1 |
|
unsigned int - %d | 4 8 |
32bit OS : 0 ~ 2^32 64bit OS : 0 ~ 2^64 |
|
(signed) long (int) - %d | 4 | -2,147,483,648 ~ 2,147,483,647 | |
unsigned long (int) - %d | 4 | 0 ~ 4,294,967,295 | |
__int8 -%lld | 1 | -128 ~ 127 | |
__int16 - %lld | 2 | -32,768 ~ 32,767 | |
__int32 - %lld | 4 | -2,147,483,648 ~ 2,147,483,647 | |
__int64 - %lld | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
실수형 | float - %f | 4 | -3.4*10^38 ~ 3.4*10^38 |
(long) double - %f | 8 | -1.79*10^308 ~ 1.79*10^308 | |
열거형 | enum - %d | 2 | -32,768 ~ 32,767 |
+) int와 long의 차이점
반응형
c언어에서 int와 long은 크기나 부호 여부가 동일하며 따라서 표현할 수 있는 수의 범위도
완전히 동일한 것처럼 보입니다. 그렇지만 어밀히 말하면 다른타입입니다.
C언어의 타입 정의에 int형은 "CPU의 레지스터와 동일한 크기를 가지는 타입"으로 정의되어
있습니다. 레지스터란 CPU내의 임시 기억 장소이며 레지스터의 크기에 따라 CPU의 비트수를
정의합니다. 즉, 레지스터가 16비트이면 16비트 컴퓨터, 32비트이면 32비트 컴퓨터라고 부릅니다.
즉, int형은 CPU가 가장 효율적으로 다룰 수 있는 정수형으로 정의되어 있으며 그래서 int형의
실제 크기는 플랫폼에 따라 달라집니다. 32비트 운영체제에서 int는 32비트이며, 64비트는
int형이 64비트(8바이트)가 될 것입니다.
반면 long형은 그 크기가 4바이트로 고정되어 있어 어떤 플랫폼에서나 4바이트입니다.
따라서 int와 long이 동일한 크기를 가지는 것은 32비트 플랫폼에서 뿐이며
16비트에서는 다른 타입이고 64비트에서도 달라질 것입니다.
+) 열거형 변수 enum 사용법
열거형 변수 enum은 리스트를 열거하고 첫번째 열거 변수에 초기값을 정의해주면, 그 이후로 열거되는 변수에 맞는 항목이 +1 되서 정수형으로 값을 리턴하는 변수이다. 아래 예시를 보면 이해가 잘 될 것이다.
반응형
#include <stdio.h>
enum DayOfWeek { // 열거형 정의
Sunday = 0, // 초기값 할당
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
int main()
{
enum DayOfWeek week; // 열거형 변수 선언
week = Tuesday; // 열거형 값 할당
printf("%d\n", week); // 2: Tuesday의 값 출력
return 0;
}
출력결과 : 2
반응형
'IT > C C++' 카테고리의 다른 글
[C/C++] struct와 typedef struct 차이 (1) | 2022.12.09 |
---|---|
[vscode] 액션을 선택해 주십시오. 액세스 거부 해결 방법 (0) | 2022.06.24 |
[C/C++] 문자열 함수 정리 (0) | 2022.05.20 |
[C/C++] 정수, 실수 나머지 구하기 (0) | 2022.05.20 |
[C언어] 제곱 내장 함수 사용 방법 (pow 함수) (0) | 2022.05.16 |