독학 시작

본 내용은 어소트락 무료 강의 <C/C++ 무료강의>을 기반으로 공부한 내용을 정리한 것이다. 틀린 내용이 있을 수도 있음.

자료형 (Data Type)

자료형은 변수를 설명하는 역할이다. 실체가 없으며 표현하고자 하는 데이터의 크기랑 적절히 맞춰준다.

int i = 0;
// i라는 변수가 0이라는 변수값을 가지고 4byte의 크기를 가지고 정수를 표현한다.

데이터 크기의 단위는 Byte와 bit가 있으며 1 Byte = 8 bit로 정의된다. 이진수를 사용하는 컴퓨터의 특성상 1 Byte는 2^8 = 256개의 가짓수를 표현할 수 있다.

자료형은 크게 정수형 / 실수형 2가지로 분류된다.

정수형 자료형

정수형 자료형으로는 char(1), short(2), int(4), long(4), long long(8) 등이 있다. (괄호안의 숫자는 각 자료형의 byte의 크기를 의미한다.)

1 Byte를 가지는 char 자료형을 이용해 양의 정수만을 표현하고자 한다면 다음과 같다.

unsigned char c = 0;
// unsigned => 양의 정수만 보겠다

1 Byte가 표현할 수 있는 가짓수가 256개 이므로 표현할 수 있는 c는 0 ~ 255가 된다.

그렇다면 음의 정수는 어떻게 표현할까?

signed char C = 0;
// signed => 음의 정수를 포함해 모든 정수를 보겠다.

컴퓨터의 CPU에서는 음수도 덧셈처리를 하기 때문에 음의 정수를 정의하기 위해 덧셈이 0이 되게하는 상태로 음수를 정의한다. 이진수에서 맨 앞자리에 위치한 bit를 “최상위 부호 비트(Most Significant Bit, 이하 MSB)” 에 0이 들어가면 양수(0~127), 1이 들어가면 음수(-127 ~ -1)이다.

그렇다면 c 와 C는 어떻게 다른가? 변수값이 같고 Bit의 구성이 같아도 어떻게 해석하느냐에 따라 양수가 될 수 있고 음수가 될 수 있다. 이는 포인터 개념과 연결된다.

Byte

실수형 자료형

실수형 자료형은 대표적으로 float (4)와 double (8) 이 있다.

정수표현 방식과 실수표현 방식은 다르다.

실수표현 방식은 정밀도에 의존하다.

(근사값을 만들 수 있지만 정확히는 표현하지 못함. 따라서 최대한 근사한 bit 잡기, byte가 클수록 보다 정밀한 표현 가능.)

정수는 정수끼리, 실수는 실수끼리 연산하고, 두 표현방식의 피 연산자가 연산될 경우 명시적으로 변환하자.

float f = 10.2415f + (float)20;
// (float) 딱히 적지 않아도 형변환 발생