C++에서는 어떤 자료형이 있고, 어떻게 연산이 진행되는지 구체적으로 알아볼 것이다.
주로 PS에서 쓰이는 것들로 알아보자.
자료형
기본 빌트인(built-in) 자료형
void
크기:0
그냥 아무것도 아닌 자료형이다. 함수 반환 등에 쓰인다.
nullpointer
decltype(nullptr)
크기:0
논리형
bool
크기:1 byte
범위:0~1
예시:
bool ok = (x>0);
문자형
(signed) char
크기: 1 byte
범위: -128~127
예시:
char c='A';
작은따옴표를 씀에 주의하자. 큰따옴표를 쓰면 string이다.
unsigned char
크기: 1 byte
범위: 0~255
예시:
unsigned char s = 'A';
왜 문자형인데 범위가 정수일까? 이는 사실 C++ 내에서 아스키로 문자를 저장하기 때문이다. 따라서 'A'는 사실 65라는 정수로 저장되어있다. 그래서 다음이 가능하다.
char s = 'A';
int i = s;
cout << i; // 65
그렇다면 signed와 unsigned의 차이는 뭘까? signed는 값이 음수가 될 수도 있다. 그래서 200 등의 큰 값을 집어넣으면 -56이 된다. 이게 문자하고 뭔 관련이 있는지는 모르겠다. 일단 실전 PS에서는 문자를 다룰 때 그냥 signed를 쓰는 모양이다.
정수형
(signed) short (int)
크기: 2 byte
범위: -32,768 ~ 32,767
예시:
short a = 65;
unsigned short (int)
크기: 2 byte
범위: 0~65,535
예시:
unsigned short a = 65;
(signed) int
크기: 4 byte
범위: -2,147,483,648 ~ 2,147,483,647 (플마 20억)
예시:
int a = 65;
unsigned int
크기: 4 byte
범위: 0 ~ 4,294,967,295
예시:
unsigned int a = 65;
일상적으로 가장 많이 쓰이는 정수 자료형이다. 다만 몇몇 문제에서 값이 2,147,483,647보다 커질 때에는 까먹지 말고 long long을 써주도록 하자.
int a = 3000000000;
cout << a; // -1294967296
unsigned int a = 3000000000;
cout << a; // 3000000000
(signed) long (int)
크기: 8 byte
범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
예시:
long a = 3000000000;
unsigned long (int)
크기: 8 byte
범위: 0 ~ 18,446,744,073,709,551,615
예시:
unsigned long a = 3000000000;
(signed) long long (int)
크기: 8 byte
범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
예시:
long long a = 3000000000;
unsigned long long (int)
크기: 8 byte
범위: 0 ~ 18,446,744,073,709,551,615
예시:
unsigned long long a = 3000000000;
아니 그러면 long과 long long은 무슨 차이일까?
long은 최소 32비트, long long은 최소 64비트라고 하다. 그런데 보통 PS에서는 long보다는 long long을 많이 쓰는 것 같다.
실수형
float
크기: 4 byte
범위: ±3.4×10^(-37) ~ ±3.4×10^(38) (대충 7개 유효자릿수)
예시:
float a = 3.14;
double
크기: 8 byte
범위: ±1.7×10^(-307) ~ ±1.7×10^(308) (대충 15~17개 유효자릿수)
예시:
double a = 3.14159265358979;
long double
크기: 8 byte
범위: ±1.7×10^(-307) ~ ±1.7×10^(308) 이상
예시:
long double a = 3.14159265358979;
외부 라이브러리(?) 자료형
string
C++에서 기본적으로 지원해주는 내장 자료형은 아니다. 쓰려면 #include <string>을 해줘야 하며, 이는 #include <bits/stdc++.h> 호출해주면 자동으로 불러와진다. PS에서 문자열을 다룰 때 굉장히 많이 쓰인다.
사용 예시
string s = "apple";
char과는 다르게 큰따옴표를 사용해주는 것이다.
다음으로, 이 string 자료형을 다른 자료형으로 변환해주는 방법을 알아보자.
여기를 참고하자.
https://life-with-coding.tistory.com/283
[C++][형변환] int to string, string to int / int to char, char to int
인트로 안녕하세요. 오늘은 C++ 형변환에 대해서 포스팅하겠습니다. (형변환) int char* : https://life-with-coding.tistory.com/284 (형변환) int string : https://life-with-coding.tistory.com/283 int string 형변환 알고리즘
life-with-coding.tistory.com
만약 어떤 문자열 안에 특정 글자가 있는지 찾아보려면 어떻게 하는가? 파이썬에서는 그냥 in 만 이용해주면 되는데, C++은 조금 복잡하다.
여러가지 방법중에서도 그나마 가장 간단한 방법은 다음과 같다.
string s = "apple";
bool check = (s.find('e') != string::npos);
"apple"이라는 string에서 'e'라는 char를 찾으려면 s.find()를 해주면 된다. 이의 반환값은 인덱스인데, 만약 없다면 npos라는 특수한 값을 리턴한다. 이를 체크해주는 것이다.
string의 더 많은 내장함수와 기능들에 대해서는 아래 블로그를 참고하자.
[C++] string (문자열) 클래스 정리 및 사용법과 응용
[목차] 1. string 클래스란? 2. string 클래스의 입출력 3. string 클래스 생성 4. string 클래스 연산자 활용 5. string 클래스의 멤버 함수 6. string 클래스의 멤버 함수 사용 예시 1. string 클래스란? - C++ STL에
rebro.kr
연산자
적기 귀찮다. 아래 포스팅을 참고하자.
https://songsite123.tistory.com/8
[C++] 연산자 총 정리 (Operator)
C++ 은 여러 종류의 연산을 위해 다양한 연산자(operator) 을 제공합니다. C++ 의 연산자를 총 정리하는 포스팅입니다. 산술 연산자(arithmetic operator) 대입 연산자(assignment operator) 증감 연산자(increment an
songsite123.tistory.com
다만 딱 하나, 파이썬에서 C++로 넘어올 때 파이썬 코더들이 처음 보지만 C++에서 엄청 많이 쓰는
전위/후위 증감 연산자에 대해서 예시와 함께 구체적으로 알아보자.
++i, --i와 같은 전위 증감 연산자는 일단 i에 증감 연산을 적용하고, 이를 반환한다.
i++, i--와 같은 후위 증감 연산자는 일단 i를 반환하고, 그 후에 증감 연산을 한다.
아래 예시를 보면 둘의 차이점이 바로 이해된다.
int main() {
int a = 3;
int b = ++a; // a:4, b:4 (a를 1 증가시킨 뒤 그 값을 b에 대입)
int c = a--; // a:3, c:4 (c에 a를 먼저 대입하고, 이후 a를 1 감소)
}
'C++ 같이 배워요' 카테고리의 다른 글
| [C++] Day 5 - 자료 구조(1) - 배열과 벡터, 튜플 (2) | 2025.07.10 |
|---|---|
| [C++] Day 4 - 조건문 및 반복문 (0) | 2025.07.09 |
| [C++] Day 2 - 입력 및 출력 (0) | 2025.07.08 |
| [C++] Day 1 - PS를 위한 Visual Studio Code 세팅하기(Mac을 위한) (0) | 2025.05.21 |
| [C++] Day 0 - 왜 C++인가? (0) | 2025.05.12 |