C++ 1. 자료형
01. 자료형
자료형은 크게 정수형 자료형과 실수형 자료형으로 구분할 수 있다.
정수형 자료형
형식 이름 | 바이트 | 값의 범위 |
---|---|---|
bool | 1 | false 또는 true |
char | 1 | –128 ~ 127 |
short | 2 | -32,768 ~ 32,767 |
int | 4 | -2,147,483,648 ~ 2,147,483,647 |
long | 4 | -2,147,483,648 ~ 2,147,483,647 |
long long | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
정수형 자료형에는 자료형의 이름 앞에 unsigned
를 붙여서 양의 값의 범위만 갖는 자료형으로도 정의가 가능하다.
예를 들어, 다음과 같은 코드를 실행한다고 해보자.
int main()
{
unsigned char uc = 200;
char c = 200;
return 0;
}
unsigned char
변수인 uc
는 200이 그대로 들어가지만, char
변수인 c
는 -56이 저장된다.
그 이유는 char c
에 다음과 같은 순서로 값이 저장되기 때문이다.
-
- 200을 이진수로 변환, 메모리에 1100 1000을 저장.
-
- MSB로 부호 판별, 1이므로 음수 이진수 100 1000으로 읽음.
-
- 저장 결과 이진수 -100 1100 => 10진수 -56 이 됨.
실수형 자료형
형식 이름 | 바이트 | 값의 범위 |
---|---|---|
float | 4 | 3.4E +/- 38(7자리 숫자) |
double | 8 | 1.7E +/- 308(15자리 숫자) |
실수형 자료형은 IEEE 표준 부동소수점 표현 체계를 따른다.
부동소수점 표현방식은 최상위 비트(MSB)는 부호를 표시하는데 사용되고, 이후 지수부분과 가수부분으로 이루어져있다.
어떤 실수를 2진수로 변환한 뒤, $1.m \times e^n$ 의 형태로 맞추면, $m$이 가수부분에 순서대로 할당되고 $n$이 2진수로 지수부분에 할당된다.
따라서, 실수 자료형은 정수 자료형과는 비트 저장 형태가 완전히 다르므로 연신 시 주의가 필요하다.
실수 자료형 중 float
변수는 대입하는 실수 뒤에 suffix를 붙여 대입한다.
float f = 3.14f;
double d = 3.14;