C++ · 심층 가이드
C++ 기초 문법 완전 정리
변수 선언과 조건 분기, 반복문, 컨테이너와 타입 변환까지 C++ 기본 문법을 다루면서 값 복사와 참조, 정수 승격 같은 언어 고유의 함정을 함께 짚습니다.
C++의 기초 문법은 다른 언어와 표기가 비슷해서 오히려 오해를 부릅니다. 대입이 값 복사라는 점, 변수마다 수명이 스코프에 묶여 있다는 점, 같은 산술 연산이 타입에 따라 다른 결과를 내는 점이 대표적입니다. 다른 언어를 먼저 배운 사람이 자주 걸리는 지점도 여기입니다. 문법을 외우는 것보다 각 줄에서 값이 복사되는지 참조가 넘어가는지를 매번 짚는 습관이 이 단계에서 훨씬 큰 차이를 만듭니다.
앞쪽 절반은 값과 판단을 다룹니다. 숫자 변수 선언과 문자열 상수 선언에서 타입과 상수성을 잡고, if else 분기와 삼항 연산자 사용으로 같은 판단을 두 가지 형태로 써 봅니다. 뒤쪽 절반은 묶음을 다루는데, 배열 생성과 순회에서 시작해 맵 또는 객체 생성과 정렬 기초로 이어지면서 표준 라이브러리 컨테이너와 알고리즘의 관계가 드러납니다. 타입 변환은 앞의 모든 주제와 얽히므로 마지막에 다시 읽으면 이해가 붙습니다.
가장 조용히 사고를 내는 것은 부호 있는 정수와 없는 정수를 섞는 경우입니다. 컨테이너의 크기는 부호 없는 타입으로 나오기 때문에, 이를 int와 비교하면 int 쪽이 부호 없는 타입으로 변환됩니다. 비어 있는 컨테이너에서 크기에 1을 뺀 값은 음수가 아니라 매우 큰 수가 되어, 반복문이 즉시 끝나야 할 자리에서 폭주합니다. 인덱스 순회 대신 범위 기반 for를 쓰면 이 계열의 문제를 대부분 피할 수 있습니다. 또 지역 변수를 초기화 없이 선언하면 값이 정해지지 않은 상태라, 실행할 때마다 다른 결과가 나오거나 디버그 빌드에서만 정상 동작하는 현상이 생깁니다.
01숫자 변수 선언
C++에서 숫자 변수 선언 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 숫자 변수 선언
#include <iostream>
int main() {
int count = 1;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
02문자열 상수 선언
C++에서 문자열 상수 선언 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 문자열 상수 선언
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 2};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
03불리언 플래그 만들기
C++에서 불리언 플래그 만들기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 불리언 플래그 만들기
#include <iostream>
int main() {
int count = 3;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
04문자열 길이 구하기
C++에서 문자열 길이 구하기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 문자열 길이 구하기
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 4};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
05문자열 정리하기
C++에서 문자열 정리하기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 문자열 정리하기
#include <iostream>
int main() {
int count = 5;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
06숫자 합계 계산
C++에서 숫자 합계 계산 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 숫자 합계 계산
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 6};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
07나머지 연산 확인
C++에서 나머지 연산 확인 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 나머지 연산 확인
#include <iostream>
int main() {
int count = 7;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
08if else 분기
C++에서 if else 분기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// if else 분기
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 8};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
09switch 또는 match 사용
C++에서 switch 또는 match 사용 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// switch 또는 match 사용
#include <iostream>
int main() {
int count = 9;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
10null 기본값 처리
C++에서 null 기본값 처리 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// null 기본값 처리
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 10};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
11삼항 연산자 사용
C++에서 삼항 연산자 사용 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 삼항 연산자 사용
#include <iostream>
int main() {
int count = 11;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
12for 반복문
C++에서 for 반복문 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// for 반복문
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 12};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
13while 누적 계산
C++에서 while 누적 계산 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// while 누적 계산
#include <iostream>
int main() {
int count = 13;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
14break 와 continue
C++에서 break 와 continue 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// break 와 continue
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 14};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
15배열 생성과 순회
C++에서 배열 생성과 순회 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 배열 생성과 순회
#include <iostream>
int main() {
int count = 15;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
16맵 또는 객체 생성
C++에서 맵 또는 객체 생성 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 맵 또는 객체 생성
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 16};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
17정렬 기초
C++에서 정렬 기초 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 정렬 기초
#include <iostream>
int main() {
int count = 17;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
18튜플 또는 페어 사용
C++에서 튜플 또는 페어 사용 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 튜플 또는 페어 사용
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 18};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
19타입 변환
C++에서 타입 변환 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 타입 변환
#include <iostream>
int main() {
int count = 19;
std::cout << (count > 5 ? "big" : "small") << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
20날짜 문자열 만들기
C++에서 날짜 문자열 만들기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.
C++ code
// 날짜 문자열 만들기
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> values = {3, 1, 4, 20};
std::sort(values.begin(), values.end());
std::cout << values.front() << "\n";
}기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.
값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.
정리하며
- 지역 변수는 선언과 동시에 초기화해 미정의 값으로 인한 간헐적 오동작을 막습니다
- 컨테이너 크기는 부호 없는 타입이므로 int와 비교하거나 빼는 연산에 주의합니다
- 인덱스 순회보다 범위 기반 for를 기본으로 쓰면 경계 오류가 크게 줄어듭니다
- 대입은 기본이 값 복사이므로 큰 객체를 넘길 때는 참조 전달 여부를 의식합니다
더 깊이 들어가고 싶다면 C++ 학습 라이브러리에서 다른 주제 가이드를 이어서 보거나, 언어 비교에서 같은 개념이 다른 언어에서 어떻게 표현되는지 확인해 보세요.