이 글에서는 C++의 근간이 되는 개념인 자료형에 대해 알아봅니다.
TL;DR
- C++은 자료형 기반의 언어임. C++에서 사용되는 모든 데이터는 어떤 자료형인지 명확하게 정해져 있어야만 함
- 대표적인 기본 자료형
bool
,int
,double
,char
,std::string
정도는 기억할 것 - 대부분의 경우, 숫자 형태의 데이터는
int
나double
로, 문자 형태의 데이터는"
(큰따옴표)로 묶어서std::string
자료형으로 다룸
자료형
C++에서 자료형(type)이라는 개념은 매우 중요합니다. C++ 언어로 짜여진 코드를 컴파일 하기 위해서는, 코드 내의 모든 변수, 함수의 입력인자, 함수의 출력인자의 자료형이 정해져 있어야만 합니다.
자료형이란 말그대로 데이터가 어떤 종류의 자료인지를 설명하는 것입니다. 예를 들어 3
은 정수라는 종류로, -1.8
은 실수라는 종류로, 'c'
는 문자라는 종류로 분류해볼 수 있겠네요. 이렇게 분류에 사용한 개념인 정수, 실수, 문자같은 것을 자료형이라고 합니다.
C++에는 언어 자체적으로 제공하는 몇 가지의 기본자료형(built-in type)이 있어, 간단한 데이터에 대해서는 이 기본자료형으로 자료형을 정해줄 수 있습니다.
만약 기본자료형으로 부족함을 느끼신다면, 여러분이 직접 자료형을 만들어서 사용할 수도 있습니다. 이를 클래스(class)라고 합니다. 이에 대해서는 나중에 다루겠습니다.
기본자료형
기본자료형에도 많은 종류가 있습니다. 예를 들면 정수를 저장하더라도, 크기가 작은 정수를 저장할 때에는 메모리 공간을 조금만 써도 되니 일종의 작은 정수라는 자료형도 있고, 크기가 큰 정수를 저장해야 할 때에는 큰 정수라는 자료형에 저장하는 식입니다.
하지만 이 시리즈에서는 그렇게 세세하게 다 살펴보지는 않을 것입니다. 그냥 대중적으로 쓰이는 기본자료형 5가지만 기억하고 가겠습니다.
bool
bool
은 참(true)과 거짓(false)이라는 두 가지 데이터를 담당하는 자료형입니다.
예를 들어, "3은 5보다 작다"라는 내용이 있다면, 우리는 이것을 보고 참(true)이라고 생각할 것입니다. 그렇다면 "3은 5보다 작다"라는 내용은 bool
자료형의 데이터라고 볼 수 있는 것입니다.
int
int
는 정수를 담당하는 자료형입니다. -153
, 0
, 22
, … 등 소수점 이하를 가지지 않는 정수를 C++에서는 int
자료형으로 구분합니다.
double
double
은 실수를 담당하는 자료형입니다. -3.2
, 0.72351
, … 등 소수점 이하를 가지는 실수를 C++에서는 double
자료형으로 구분합니다.
수학적으로는 정수 값이라고 여겨지더라도, C++에서는 소수점 이하를 가진다면 int
가 아니라 double
입니다.
예를 들어, 3
은 int
자료형이지만, 3.0
은 double
자료형입니다.
char
char
는 한 글자의 문자를 담당하는 자료형입니다. '
(작은따옴표) 표시로 감싸진 한 글자의 문자만 이에 해당합니다.
예를 들면, 'a'
, 'T'
, '1'
, '.'
, … 등과 같은 데이터가 char
자료형입니다.
1
과 1.0
과 '1'
은 C++ 입장에서 전혀 다른 데이터입니다.
1
은 정수 1로서, int
자료형입니다.
1.0
은 실수 1.0으로서, double
자료형입니다.
'1'
은 1이라는 모양을 가진 글자 한 개로서, char
자료형입니다.
std::string
std::string
1은 문자들로 구성된 글 데이터를 담당하는 자료형입니다. "
(큰따옴표) 표시로 감싸진 문자들을 말합니다. 이를 프로그래밍에서는 문자열이라고 부릅니다.
예를 들면, "ABC"
, "Hi."
, "Hello, world!"
, … 등과 같은 데이터가 std::string
자료형입니다.
최근의 C++에서 글자로 구성된 데이터를 다룰 때에는 대부분 std::string
을 쓰는 추세입니다. 심지어 한 글자의 문자를 저장할 때에도, char
보다는 std::string
자료형을 사용하지요.
char
이라는 자료형은 이 데이터는 무조건 한 글자의 문자라는 것이 명확한 경우에 사용될 뿐, 대부분 문자 형태의 데이터를 다룰 때에는 std::string
자료형을 쓴다고 보시면 됩니다.
다만, 최적화의 목적등을 위해 사용하는 경우도 있고, 혹은 이전부터 사용하던 함수에서 char
을 보게 될 일도 꽤 많으므로, 둘 다 기억해두시기 바랍니다.
C++에서는 '
(작은따옴표)로 감싼 문자와 "
(큰따옴표)로 감싼 문자는 완전히 다릅니다.
예를 들어, 'a'
은 char
자료형이지만, "a"
은 std::string
자료형입니다.
또한, "
로는 "abc"
와 같이 여러 개의 문자들을 한 번에 묶어서 감쌀 수 있지만, '
로는 'abc'
와 같이 사용하실 수 없으며 무조건 한 개의 문자만 감싸는 형태로 사용하셔야 합니다.
Chanagelog
- 2021-12-30: 최초 게시
-
std::cout
때와 유사하게, 엄밀히 말하자면std::string
이라는 표현은std
에 소속된string
이라는 자료형의 의미입니다. 다만 여기서는std::string
이라는 것을 통째로 기억하시길 권해드립니다. ↩︎