C++ 프로그래밍 기초 1

김여울·2025년 5월 27일

내일배움캠프

목록 보기
8/139

오늘 아침엔 알고리즘 특강을 듣고 처음으로 코딩 테스트를 경험해봤다.
어제 배운 내용을 바탕으로 GitHub에 알고리즘 코드카타 레포지토리를 만들고, 파일도 직접 추가해보았다. 좀 익숙해진 것 같다! 아직 C++ 강의를 듣지 않아서 문제를 풀 땐 페이지에 있는 정답을 참고했지만, 얼른 강의를 마치고 혼자서도 코딩 테스트를 풀 수 있으면 좋겠다.

점심 이후에는 새로운 조에서 같이 노션을 만들고, C++ 문법 강의를 시작했다.
프로그래밍 언어도 언어이기 때문에 흐름을 잘 이해하는 게 중요하다고 느꼈다. 그래서 강의를 들으며 노션에 타이핑해가며 정리했다.

📎강의 자료 + 필기

Visual Studio 단축키

Ctrl + Shift + B → 전체 빌드
Ctrl + F5 → 실행만
Ctrl + F7 → 파일 하나만 컴파일 ✅
F5 → 실행 + 디버깅 ✅
✅ 한 것만 사용했다

파일 종류

1️⃣ 소스 파일

  • .cpp
  • 코드를 작성하는 파일
  • 코드 구현이나 메인 함수를 작성한다

2️⃣ 헤더 파일

  • .h

  • 함수, 클래스, 변수 등을 선언만 하는 파일

    • 코드의 재사용 용이함
    • 여러 파일에서 중복 없이 깔끔하게 사용 가능
  • 실제 동작은 .cpp 파일에서 작성한다

  • 헤더 파일 종류

    • 라이브러리 헤더 파일
      • 이미 존재하는 C++ 기본 제공 or 외부 라이브러리
      • #include <iostream>, #include <string> 처럼 <> 사용
    • 사용자 정의 헤더 파일
      • 내가 직접 만든 .h 파일
      • #include "MyPlayer.h" 처럼 "" 사용

3️⃣ 리소스 파일

  • .uasset, .umap, .txt
  • 코드가 직접 포함되지 않은 외부 자원(데이터, 에셋 등)을 포함한 파일들

기본 골격

#include <iostream>
using namespace std;

int main() 
// 여기서부터 프로그램 시작!
{
   cout <<"Hello, World" << endl;
   return 0;  // 프로그램 종료
 }
  • #include <iostream>
    • input output stream(데이터 흐름 = 빨대)
    • 이미 제공된 많은 기능들을 사용하기 위해 헤더 파일 포함
  • int main()
    진입점 / 시작점
    • int 사용하는 이유
      ➡ 함수가 정수형 값을 반환한다는 뜻 (return 0; 같은 숫자 반환)
      ➡ 운영체제가 결과 코드를 숫자로 받기 때문이다
    • main()
      ➡ 시작 함수 이름, 정해진 이름이라 절대 바꾸면 안 된다
  • cout
    • 출력 스트림
    • c 는 console (실행 검은 창) 을 의미한다
  • cin
    • 입력 스트림
  • <<
    • 연쇄적으로 사용 가능하다
  • endl
    • 개행
    • 실행 창에서 enter 같은 줄 바꿈
  • return 0;
    • 프로그램이 정상적으로 종료되었다고 운영체제에 알려줌
  • ;
    - 문장이 끝났다는 걸 명확히 알려줘야 컴파일러가 코드를 정확히 이해할 수 있다
    - 하나의 명령이 끝났다는 걸 알려주는 마침표

변수 문법

1️⃣ double | float

doublefloat보다 더 정밀함

구분float (단정도)double (배정도)
크기4바이트 (32비트)8바이트 (64비트)
정밀도소수점 약 7자리 정도소수점 약 15~16자리 정도
메모리 사용적음더 큼
계산 속도더 빠를 수도 있음느릴 수도 있음
주요 사용 용도실시간 게임과학적 계산, 정밀한 시물레이션

2️⃣ 후위연산 vs 전위연산

후위연산

int a = 5;
int b = a++;  // 후위 연산자

1단계 : a의 값을 먼저 b에 대입 → b = 5
2단계 : 그 다음에 a1 증가a = 6

전위연산

int a = 5;
int b = ++a;  // 전위 연산자

1단계 : a먼저 1 증가a = 6
2단계 : 그 값을 b에 대입 → b = 6

🧩 예시

a = 5;

b = a++;   // 후위 증가: b에 a를 먼저 넣고, a를 +1
// b = 5
// a = 6

c = ++a;   // 전위 증가: a를 먼저 +1 하고, c에 넣음
// a = 7
// c = 7
코드a 값설명
a = 55초기값
b = a++6b는 5, a는 6 됨 (후위 증가)
c = ++a7a 먼저 증가해서 7, c도 7 (전위 증가)

3️⃣ 선언과 초기화

선언

  • 변수를 만든다고 타입이랑 이름을 정한다
int age;
  • int 타입의 age 변수를 선언한다
  • 여기에 값은 없고 쓰려고 만든다

초기화

  • 변수를 만들 때 처음으로 값을 넣는다
age = 25;
  • age에 초기값 25를 넣음 <- 이게 초기화!!

선언과 동시에 초기화

int age = 25;
  • int라고 선언하면서 25를 처음으로 대입함 (초기화)

4️⃣ 삼항 연산자

  • 조건에 따라 값을 선택하는 연산자이고 항이 세 개라 삼항 연산자
조건 ? X : Y

조건 true or false
true면 ➡ X 실행
fasle면 ➡ Y 실행

5️⃣ const 상수

  • 한 번 값을 대입한 후에는 수정이 불가능하다
int x = 3;

x = 5;     // ⭕ 값 수정 가능

const int y = 3;  
y = 5;    // ❌ 값 수정 불가

6️⃣ 입출력 연산자 (스트림 연산자)

cout << "나이를 입력하세요: ";
cin >> age;
  • cout << 는 출력 (화살표가 오른쪽)
    • 문자열을 화면(cout) 쪽으로 내보낸다 ➡️ 화살표는 오른쪽
  • cin >> 는 입력 (화살표가 왼쪽)
    • cin에서 받은 값을 age에 넣는다 ➡️ 화살표는 왼쪽
개념방향예시기억법
대입 연산오른쪽 ➡ 왼쪽a = 5 + 3;계산 → 저장
출력 연산왼쪽 ➡ 오른쪽cout <<cout에 출력값을 넘김
입력 연산오른쪽 ➡ 왼쪽cin >>cin에서 받아서 변수로 넣음

7️⃣ true는 1, false는 0

  • true1, false0 으로 출력된다

    • true, false 는 논리값(참/거짓) 인데 실제로 컴퓨터는 숫자로 저장한다
  • 컴퓨터는 이진법으로 숫자를 표현한다

    결과 (bool로 해석)
    0false (거짓)
    1true (참)
    -1true (참)
    100true (참)
    0.0ffalse (거짓, 실수형도 0이면 false)
    -5.3true (실수도 0 아니면 true)
    • bit 기준
      • 00000000 ➡️ false
      • 00000001, 11111111, 00000100, 10000000
        ➡️ 하나라도 1이 있으면 true

계산기 만들기

왜 초기화 값을 0으로 할까?

int firstNum = 0;
int secondNum = 0;

C++에서 int 변수는 초기화하지 않으면 랜덤한 값(쓰레기값)이 들어간다.
그 상태에서 계산하면 예측 불가한 결과 나올 수 있기 때문에 미리 안전한 기본값 넣어둔다.

➡️ 사용자가 입력하기 전까지는 0으로 간주한다
0 “아직 입력되지 않음”이나 “기본값”으로 많이 사용한다

나중에 firstNum + secondNum 계산을 하기 전에 값이 없으면 에러가 날 수도 있다.
0으로 초기화하면 계산해도 결과가 안전하게 나온다

0개의 댓글