프로그래밍 언어/C++

[게임 프로그래머 입문 올인원] 데이터와 로직 : 변수, 상수 (3, 4, 5강)

순정법사 2023.09.02

A. 변수 기초

1. 변수 개요

a. 컴퓨터에 저장되는 변수 이해하기

 

1) 정리하자면 CPU는 데이터를 가공, RAM은 데이터 저장

CPU와 RAM은 서로 소통하면서 프로그램을 실행함

이때 RAM은 각 주소값이 있음

 

2) 프로그래밍 언어를 사용해서 데이터 공간을 할당하려고 할 때 

주소값은 사용이 어려우니 어려우니 변수를 선언함

이때 용도에 따라 RAM에 각 영역에 할당되게 됨

 

💙 c++ 주석

// 한줄 주석
/* */ 여러줄 주석

 

b. 변수 선언

📘 문법

[타입] [변수이름]

-----------------
int hp;

 

 

💙 변수 선언 후 RAM에 할당되는 모습

 

 

대표적으로 아래만 암기하면 된다

 

  • char : 1 byte / 값의 범위는 대략 -100 ~ 100
  • short  : 2 byte / 값의 범위는 대략  -3만 ~ 3만
  • int : 4 byte -21억 / 값의 범위는 대략 ~21억
  • long long : 8 byte / 값의 범위는 대략 21억 초과 시 사용

 

데이터 형식 범위(타입) 은 여기서 자세하게 확인 가능함

 

데이터 형식 범위

자세한 정보: 데이터 형식 범위

learn.microsoft.com

 

정말 입문자용 강의라서 너무 단순한 내용은 따로 작성하지 않음

 

선언, 할당 후 출력

 

명령문은 실행이 되고 있는 메소드 안에 해야 함

위에서 아래로 해석하기 때문에 선언 위치를 잘 파악해야 함

 

😋 최종 예제

#include <iostream>
using namespace std;

int hp;
int maxHp;

int main()
{
    maxHp = 100;
    hp = maxHp;

    cout << hp;
}

✨ 실행결과

100

 

 

 


B. 컴퓨터의 데이터 타입별 이해

1. 정수를 이해하는 원리

a. 2의 보수

2의 보수 : 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수

 

 

1바이트에서는(char) 가장 왼쪽 숫자를 1로 킨 것 (다른 단위도 똑같이 가장 왼쪽 비트 1)

 

char의 데이터 값이 -128~127인 이유도 보수가 -128이기 때문에

최대로 만들 수 있는 값이 127이다!!

 

unsigned 가 붙은 경우엔 2의 보수가 들어가지 않고 128값 그대로 한번 더 들어가서 값이 2배가 되는것 

 

💙 반대값 찾는 법


만약 값이 66이라고 가정하고 66의 반대값을 찾는다고 하면
0을 1로, 1을 0으로 바꿔주고 1을 더해주면 된다 (0으로 끝나면 1로, 1로 끝나면 다음 자리 숫자 +1)

 

 

b. 숫자의 범위

메모리가 소실되는 상황에서는 어떤 규칙을 가지고 소실될까?

 

예를들어 int 값으로 606356034라는 값을 저장 후 이 값을 short에 저장한다고 하면

 

아래와 같이 short 값에 넘어가는 부분은 소실되어서 출력됨

 

💥 따라서 타입을 변환할때는 조심해야 함 

 

c. n진법

  • HEX 16진법
  • DEC 10진법
  • OCT 8진법 - 덜 중요함
  • BIN 2진법

 

💙 16진법과 2진법이 친화적인 이유

 

 

d. 컴퓨터의 연산방식

 

-값이 나오는 경우 : 정수 오버플로우 

💥 종종 나오는 경우가 있으니까 조심해야 함!!

 

e. 코드에서 진법 사용하기

  • 2진법 ➡ 10진법 : 0bNNN 
  • 16진법 ➡ 10진법 : 0xNNN

 

❔ 예제

#include <iostream>
using namespace std;

int hp;
int mp;

int main()
{
    hp = 0xF;   //16진법
    mp = 0b1100;    //2진법

    cout << hp;
    cout << mp;
}

✨ 실행결과

1512

 

 

2. 문자를 이해하는 원리

a. 아스키코드

char타입이 실제로 숫자를 저장하고 있지만 

경우에 따라서 아스키 코드 값에 있는 실제 문자를 저장할 수 있다

 

 

👉 아스키코드에 대해 더 공부하려면

 

[문자 표현의 이해] 아스키코드(ASCII)와 유니코드

💙 배경지식 컴퓨터 내부는 전기 신호로 작동하는 스위치인 트랜지스터가 존재 전기 신호가 있으면 1, 없으면 0 즉, 컴퓨터는 트랜지스터를 통해 사용자가 입력한 데이터를 0과 1로 처리 비트 : 0

monamu.tistory.com

 

 

3. 실수를 표현하는 원리

a. 근사치

실수는 항상 언제든지 커질 수 있어서 컴퓨터는 정확한 값을 출력한다기 보다

그 근사치를 표현한다고 생각하면 됨

 

float, double도 정밀도의 차이!

하지만 거의 대부분의 경우 float으로도 충분함 

 

💙 실수 뒤 f가 붙는 이유!

대부분의 경우 실수는 자동으로 double값으로 지정되어 있음


따라서 3.6f로 지정해 float값이라는걸 다시 한번 지정해주는것!

float으로 변경된 모습

 

 

4. Bool을 이해하는 원리 

a. 참과 거짓의 이해

int로 0, 1로 표현할 수는 있지만, 무엇이 참인지 거짓인지 판단하기에는 확실하지 않음

따라서 bool 이라는 값을 따로 지정해 참(true), 거짓(false)을 지정해 사용함

 

이때 참은 1, 거짓은 0값이긴 하다

 

 

 

👉 위 글에 대한 조금 더 자세한 내용은 여기 참고하기!

 

C(++) 변수 총정리

A. 변수(variable) 1. 변수 기초 a. 변수란? 🌟 가변적인 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간 b. 변수의 선언 🌟 변수를 사용하기 전에 반드시 먼저 해당 변수

monamu.tistory.com


출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum

 

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -

어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프

www.inflearn.com