OneDev

[C] 5. 변수(Variables) 본문

Language/C

[C] 5. 변수(Variables)

one_dev 2022. 7. 5. 21:29

1. 변수란?

컴퓨터는 많은 것을 기억해야 하고, 이는 컴퓨터의 메모리에 전기적 신호를 써 넣음으로써 달성된다.

이해를 돕기 위해 인기게임인 리그오브레전드(이하 롤)을 플레이 하는 경우를 생각해 보자.

게임을 진행하면서, 챔피언의 체력, 공격력, 레벨, 골드, 미니언의 체력, 등등등이 시시각각 변하는 모습을 어렵지 않게 상상할 수 있다.

이렇게 실시간으로 변화하는 모든 것들을 컴퓨터가 기억해야만 우리는 게임을 제대로 즐길 수 있는 것이다.

 

그렇다면 컴퓨터는 이러한 데이터들을 어떻게 기억할 수 있을까?

바로 컴퓨터의 메모리 램(RAM)에 저장하는 것이다.

보통 램을 표시할 때 위와 같이 표시한다. 각 방에 데이터들이 저장된다고 생각하면 될듯하다.

이 때 컴퓨터는 각 방에 이름을 붙이는데 0번,1번,2번... 과 같이 단순하게 숫자로 이름을 붙인다.

32비트 CPU의 경우 최대 2³²(=약 42억)개의 방을 가질 수 있다.

이 때 32비트의 수를 매번 쓰는게 힘들기 때문에, 주로 16진법을 이용해 주소를 나타낸다.

 

예를 들어 소유한 골드를 gold 라는 변수에 저장하면, 컴퓨터는 '알아서' 메모리 어딘가의 방에 gold의 방을 주고 그 내용을 저장한다. 편의상 0x12345678 이라는 주소값을 가진 방에 gold 라는 내용이 저장되었다고 해보자.

우리가 만약 100골드를 벌었다면, 예전에는 0x12345678 방의 모든 정보를 불러와 100 만큼을 더해준 뒤 다시 집어넣는 과정을 일일이 해주어야 했을 것이다.

하지만 우리가 변수를 지정했기때문에 gold = gold + 100 과 같이 써주기만 한다면 가진 골드에 100이 더해지게 된다.

 

이와 같이 C언어에서 바뀔 수 있는 어떤 값을 보관하는 곳을 "변수" 라고 한다.

즉 변수는 데이터를 임시로 저장하는 곳이며 자유롭게 쓰고 지울 수 있다.

 

2. 변수 선언/ 대입/ 초기화

 

#include <stdio.h>

int main(){
	int a;		//  a 라는 int 형 변수 선언
   	a = 3;		//  a 라는 변수에 3이라는 값 대입
    int b = 5;	// 선언 + 대입 => 초기화
}

 

 

(1) 변수를 사용하기 위해서 우리는 변수를 사용하기 이전에 컴파일러에게 변수에 대한 정보를 알려주어야 한다.이를 변수의 선언이라 하며 위의 예시에서는 int a 에 해당한다. int a 라는 문장은 a라는 int형(정수형) 변수를 사용하겠다고 컴파일러에게 알리는 것이다.

 

(2) 변수의 대입은 변수에 실질적으로 값을 저장하는 것으로  대입 연산자 " = " 를 이용한다.

 

(3) 또, 한 줄에서 변수의 선언과 동시에 값을 대입하는 것을 초기화 라고 한다.

 

 

3. 변수의 자료형

앞서 많이 본 int 라는 자료형은 기본적으로 정수를 나타내는 자료형이다.

변수에는 int 외에도 다른 여러가지 자료형(type)이 있는데, 각각 나타낼 수 있는 데이터의 형태나 크기가 다르기 때문에 용도에 맞춰 사용하면 된다.

 

위의 자료형들은 크게 정수형과 실수형 두 가지로 나눌 수 있다.

(1) 정수형 : short < int < long < long long (크기순)

(2) 실수형 : float < double

 

+ 또한 자료형 앞에 unsigned 를 붙이면, 양수만 표현할 수 있는 대신 표현할 수 있는 크기가 두배로 늘어나게 된다.

++ 주의) float  형 변수를 사용할 때는 끝에 f 를 붙여 float 형 변수임을 명시해줘야 한다.

float a = 3.2323f; 	// 끝에 f를 안붙여주면 double로 인식할 수도 있다
double b = 3.2323;

 

 

4. 변수의 이름짓기

변수의 이름을 짓는 것은 기본적으로 정해진 것이 없으나 최소한의 규칙권장사항 정도가 있다.

 

(1) 변수 이름 설정 규칙

1) 맨 앞에 숫자가 와서는 안됨

2) 변수명은 오직 영어, 숫자, _(언더바) 로만 구성되어야함 (한글 안됨)

3) white space (띄어쓰기, 공백) 있으면 안됨

4) 변수의 이름이 예약어 이면 안됨 ( return 같은 것은 변수 이름으로 사용 불가)

 

+ 참고) C 언어는 대소문자를 구분한다

 

(2) 권장사항

변수의 이름을 지을때, 보통 직관적으로 어떤 데이터를 담고 있는지 알아볼 수 있게 짓는다.

예를 들면 score_total 이라는 변수를 본다면 뭔지는 자세히 몰라도 전체 점수 정도가 아닐까 추측할 수는 있게된다.

변수의 이름을 지을 때 크게 두가지 방법이 있다.

(1) score_total 처럼 언더바(_) 를 이용하는 방법

(2) scoreTotal 와 같이 대문자를 이용하는 방법(Camel case/ Camel = 낙타)

중요한 것은 한가지 방법만 쓰는게 좋다는 것이다.

어디서는 언더바를 쓰고, 어디서는 Camel case를 이용하게 되면 굉장히 지저분해지고 가독성도 떨어지기 때문이다.

Comments