250206 - 게임 개발자를 위한 C++ 문법 wk1 (1)

LIHA·2025년 2월 6일
0

스파르타코딩클럽

목록 보기
2/2
post-thumbnail

프로젝트? 솔루션? 뭐가 뭔지 모르겠어요

기본적으로는 솔루션이 더 큰 개념. 한개의 솔루션 안에 여러 프로젝트가 있는 것이다.
그래서 예를 들면 솔루션 이름은 lecture, 프로젝트 이름은 chapter1 이런 식인 게 좋다.

컴파일은 Ctrl + F7, 빌드는 F5

컴파일은 번역이고 빌드는 실행이다. 비슷비슷한 과정 같지만 컴파일을 해야 빌드가 된다. 그래서 컴파일에서 실패하면 빌드도 안 됨.

이렇게 나오면 성공한 것.

변수

평생 cout만 쓰면 편하겠지만, 문자열만 출력하고 끝낼 거라면 프로그래밍을 배우는 의미가 없다. 계산기라던지 매크로라던지, 내가 할 작업을 대신 해줄 무언가를 만들어보고 싶은 게 우리가 프로그래밍을 배우는 이유.

다시 보는 변수의 타입들 - 정수, 실수, 문자, 문자열, 불리언

#include <iostream>
#include <string>
using namespace std;

int main() {
    // 정수형 변수 선언
    int age = 25;  // 초기값 25
    int year;      // 초기값 없음

    // 실수형 변수 선언
    float pi = 3.14f;
    double largeDecimal = 12345.6789;

    // 문자형 변수 선언
    char grade = 'A';

    // 문자열 변수 (C++ 표준 라이브러리 사용)
    string name = "John";

    // 불리언 변수
    bool isStudent = true;
    
    cout << "Age: " << age << endl;
    cout << "Year: " << year << " (uninitialized, may contain garbage value)" << endl;
    cout << "Pi: " << pi << endl;
    cout << "Large Decimal: " << largeDecimal << endl;
    cout << "Grade: " << grade << endl;
    cout << "Name: " << name << endl;
    cout << "Is Student: " << (isStudent ? "true" : "false") << endl;

    // 상수 선언
    const double gravity = 9.8;  // 중력 가속도
    cout << "Gravity: " << gravity << endl;

    return 0;
}

초기화되지 않은 값을 쓰는 건 컴파일러마다 다르다

그러니, 될 수도, 안 될수도 있다.

int year; 까지만 쓰면 어떻게 될까? 이건 컴파일러마다 다르다.
C style의 특성 상 초기화하지 않아도 쓰레기값이 임의로 들어갈 수도 있고, 어떤 컴파일러는 위 이미지처럼 아예 컴파일 에러를 내버리기도 한다. 이건 환경마다 조금씩 다르다.

C++에도 const가 있다 - JS처럼 한번 선언하면 바꿀 수 없다

중력가속도처럼 고정되어 바뀌지 않는 값 같은 게 있다면 const로 선언해주면 된다.

float와 double에는 유효숫자가 있다 - 뭘 쓸지 모르겠으면 double을 쓰자

   // 실수형 변수 선언
    float pi = 3.14f;
    double largeDecimal = 12345.6789;

위와 같이 float, double이 각각 선언되어 있다고 하자. 실수형은 유효숫자가 있기 때문에 float형은 유효숫자 뒤에 f까지 붙여주어야 하는 번거로움이 있다. 보통 float가 7~8자리 정도 되고 double이 15자리 정도. 컨벤션으로 고정된게 아니고 뭘 쓸지 잘 모르겠다면 double을 써주는 것이 편리하다.

숫자형 변수는 나열해서 선언할 수 있다

int a = 10, b = 5 이렇게 쓸 수 있다. 비단 int가 아니어도 float, double도 마찬가지.

나눗셈의 나머지(%)가 mod인 이유는

modular 라서 그렇다.

cin? getline? 뭐가 다른거고 뭘 쓰나요? 🥺

문자열을 입력할땐 cin 보다는 getline이 좀더 좋은거라고 알아두면 좋다.
cin의 c는 character인줄 알았는데 console이었다.
입력해달라는 문자열을 출력하면서 입력을 받는 getline 코드는 다음과 같은 식으로 작성한다.

    // 문자열 입력
    cout << "이름을 입력하세요: ";
    getline(cin, name);

string을 쓰려면 헤더를 추가해주자

string 타입을 쓰려면 #include <string> 헤더를 추가해줘야 쓸 수 있다.

unsigned는 범위가 2배지요

음수는 못 쓰지만 양수 범위 내에서 범위가 2배가 된다. -21억 ~ 21억 범위인 int를 unsigned로 선언하면 0 ~ 42억이 되는 셈.


배열

    // 1. 정수형 배열 선언
    int numbers[5]; // 정수를 5개 저장할 수 있는 배열

    // 2. 선언과 동시에 초기화
    int initializedNumbers[3] = { 1, 2, 3 }; // 정수 배열을 선언하고 값 초기화

선언과 초기화가 헷갈린다면? '변수 선언, 값 초기화' 를 기억하자

선언은 int a; 이고, 초기화는 a = 10; 이다. 그러니 int a = 10; 이면 선언하면서 값 초기화를 같이 해준 것.

오류는 컴파일되지 않지만, 경고는 컴파일은 된다. 다만 신경쓰라는 것

이 오류같은 경우는 '너 이거 안쓰는데? 삭제해야 하는거 아녀?' 라고 하고 있다. 컴파일이 안되는 건 아닌데, 가급적이면 고치라는 메시지.

profile
갑자기 왜 춤춰?

0개의 댓글

관련 채용 정보