brunch

You can make anything
by writing

C.S.Lewis

by Moai Sep 11. 2020

C++ 변수

RPG(역할 플레이 게임) 게임과 같이 가상의 캐릭터를 성장시키는 게임을 해보았는가?


게임 프로그램은 내가 키우는 캐릭터 정보 및 능력을 어딘가에 저장하고 나의 플레이 따라 실시간으로 그 값을 변화시킨다. 그 값들은 컴퓨터의 메모리라는 곳에 보관을 하게 되는데 한 가지 궁금한 점이 생긴다.


저장하는 값은 숫자가 있을 수도 있고 텍스트가 있을 수 도 있고 심지어는 소수일 수도 있다. 이렇게 저장하는 값의 타입이 다양한데 메모리는 그것을 어떻게 알고 저장하는 걸까? 컴퓨터는 0101밖에 모르는데 어떻게 알파벳, 한글을 알고 저장하는 걸까?  


정답은? 윈도우와 리눅스 같이 운영체제가 메모리에 저장하고 읽는 방식을 결정하기로 했다. 저장 방식을 설명하고자 했으나 글이 길어져서 삭제했다. 어차피 운영체제, 버전마다 저장하는 방식이 다르므로 패스하자. 다만 우리가 숫자로 데이터를 메모리에 저장했는데 그 값을 문자로 읽으려고 하면 표현방식이 달라서 읽을 수 없다는 것만 알아두자.  


컴파일러와 개발자는 서로의 편리를 위해 한 가지씩 양보했다. 개발자는 컴파일러를 위해 프로그래밍 언어로 프로그램을 구현할 때 운영체제가 적절하게 메모리를 쓰고 읽을 수 있도록 타입(int, bool, string... )을 알려주기로 했다. 컴파일러는 개발자를 위해 개발하기 쉽도록 메모리의 주소 대신 메모리 이름을 정할 수 있도록 허용했다.


결론을 말하자면 개발자는 프로그램이 메모리에 값을 저장하기 위해 타입을 정하고 내가 쓰고 싶은 이름을 정해주면 된다. 이것을 우리는 변수라고 부른다.


단순하지만 정말 중요하다. 함수 내부에 메모리를 사용하기 위해서는 변수를 선언해 컴파일러에게 알려주어야 한다. C++은 파이썬과 다르게 한번 선언된 변수는 타입을 바꾸지 못한다.


int myNumber; // 숫자

long myBigNumber; // 큰 숫자

bool isTrue; // 진실 or 거짓

string myText; // 문자열

double myPrime; // 소수


그리고 다음과 같이 값을 넣어주면 된다.


myNumber = 3;

myBigNumber = 3333333333333333333333;

isTrue = true;

myText = "이것은 문자열이다";

myPrime = 1.5;





매거진의 이전글 C++ 입출력
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari