본문 바로가기
[ Program ]/c#스터디

6.변수,자료형 1(변수란, 자료형종류)

by 관이119 2021. 9. 20.





그림1

 

변수란 값을 담을수 있는 메모리상의 공간 가리킨다.

 

 


1번 그림에서 우측에 있는게 실제 pc의 RAM 인데 프로그램이 실행되는동안 해당공간에 임시로 데이터들을 넣고 프로그램에서 사용한다.

윈도우에서 RAM 의 임의공간에 데이터를 막쓰진 않는다.

기본적으로 순서대로 데이터를 쌓아서 사용하게 되는데 그 개념이 1번그림의 왼쪽과 같은 형태가 된다.

즉 , 낮은주소부터 객체의 정보를 넣어두게 되고 높은주소부터 상수등 고정된 정보를 넣어두게 된다.

지금 이내용을 정확히 이해할 필요는 없는데 궁금하면 개인적으로 윈도우가 메모리를 어떤형태로 사용하는지 찾아보자.

내부적으로 순서대로 데이터를 쌓아서 관리한다 정도만 알고 있으면 된다.


그림2


그림2를 보면 실제 메모리 공간에 데이터를 어떻게 넣는지 설명하고 있다.

20이라는 데이터를 my_age 라는 변수의 값을 가지게 하고 , 3591 이라는 데이터는 내워커카드 번호를 가지게 한다.

그림2에서 나타내는 것을 소스로 표현하면 다음과 같다.

int my_age = 20;
int my_worker_card_num = 3591;

위소스는 거의 모든 프로그램에서 사용하는 형식인데  (값이들어갈 공간의 형태) (변수명) = (실제값);  이다.

; 은 현재 문장이 끝났다는 의미로 실제 생활에서 쓰는 마침표와 같은데 없어도 알아서 구분해주는 언어도 있지만 오류가 나는 언어도 있으므로

꼭 붙여주는 습관을 들이자.





(값이 들어갈 공간의 형태) 라는 의미는 숫자를 쓸 건지 문자를 쓸 건지 등을 의미하는 말이다.

숫자 문자도 무작정 동일한 크기를 가지진 않는다. 대부분의 시스템에서는 메모리가 한정되어 있기 때문에 무조건 큰 값을 담을 수 있는 형식으로 모두 사용해버리면

그 변수에 무슨값이 들어가던지 그만큼의 공간을 차지하기 때문에 프로그램 혼자서 PC를 독차지하는 구조가 되어버릴수도 있다.

결국 윈도우가 사용할 메모리 공간마저 부족해지면 PC가 다운되어 버린다.

그래서 같은 숫자를 표현하는데도 몇가지 형식이 있는데 int 라고 쓰면 –2,147,483,648 ~ 2,147,483,647 사이의 숫자를 입력할 수 있다.

double 라고 쓰면 ±5.0 × 10−324 ~ ±1.7 × 10308 사이의 숫자를 입력할수 있고 short 라고 쓰면 –32,768 ~ 32,767 사이의 숫자를 입력할수 있다.

결국 그림2와 같이 my_age 변수에 20 값을 넣으려면 short 만 있어도 충분하다.

위내용은 아래 그림3번을 보면 이해가 될거라고 생각된다.

회색이 전체 메모리 공간을 의미하고 각각의 형식에 따라 메모리의 공간을 저런형태로 미리 선점하고 있게 된다.

 

그림3

 



내용이 길어졌는데 결국 숫자와 문자들 데이터 넣을 공간을 지정하는 형식이 여러가지가 있고 어떤데이터가 들어올지 생각해서 해당데이터에 맞는

형식을 지정해줘야 한다는 말이다.




그런데 왜 프로그램 작성할때 숫자나 문자를 직접 안쓰고 변수에 쓸까?


첫째로 제대로 사용한다면 의미를 쉽게 알수 있게 된다.

my_age 라는 이름으로 변수를 사용한 프로그램을 만약 10년뒤에 다시 수정하게 된다면 변수명만 보고도 내나이를 가리키는 값이 었구나 알수 있게 되지만

20 이라는 숫자를 사용하게 된다면 10년뒤에 수정할때 이값이 의미하는게 뭔지 알수 없게 되버린다. (물론 기억하고 있을수도 있다. 모든걸 기억하는 천재라면)


둘째로 반복사용시 수정해야할 소스가 줄어든다.

예를 들면 내나이와 워커카드번호를 10만번씩 출력해야하는 프로그램을 만든다고 생각해보자.

MessageBox.Show("20");
MessageBox.Show("5912");
MessageBox.Show("20");
MessageBox.Show("5912");
              .
              .
              .

해서 10만번을 출력하게 만들었다.

그런데 프로그램을 완성하고 보니 12월 31일이어서 내일 내 나이가 바뀐다.

그래서 다시 수정한다.

MessageBox.Show("21");
MessageBox.Show("5912");
MessageBox.Show("21");
MessageBox.Show("5912");
              .
              .
              .

상상만 해도 바보같은짓이다.



다음으로  변수를 사용하는 예로 생각해보자.(다음예제는 조금 바꿔줘야하지만 이해의 편의를 위해서 그대로 둔다. 실제로 아래코드는 오류남.)
int my_age = 20;
int my_worker_card_num = 5912;
MessageBox.Show(my_age); 
MessageBox.Show(my_worker_card_num );
MessageBox.Show(my_age);
MessageBox.Show(my_worker_card_num );
              .
              .
              .

위와같이 10만줄을 만들었다면
내년에 내나이가 21이되면  아래부분은 그대로 두고 변수만 변경해주면 된다.

int my_age = 21; <--------- 실제 변경된 부분
int my_worker_card_num = 5912;
MessageBox.Show(my_age); 
MessageBox.Show(my_worker_card_num );
MessageBox.Show(my_age);
MessageBox.Show(my_worker_card_num );
              .
              .
              .

위와같이 숫자 20을 21로만 바꿔주면 해당변수를 사용한곳은 모두 21이 찍힌다.

이정도면 변수를 왜사용하는지는 이해했으리라 생각한다.


그림4


변수의 자료형은 4번째 이미지를 보면 되는데 실제로 프로그램하면서 모두사용하진않는다.

대부분의 경우 int , double , char , string , bool 정도만 사용하는데 각각의 변수에 대해 간단히 설명하면

int - 일반적인 정수에 사용
double - 소수점들어가는 숫자에 사용
char - 글씨1개를 표현할때 사용
string - 문장을 표현할때 사용
bool - 참,거짓만 필요한경우 사용

정도가 된다.




***숙제 : 마음에 드는 변수명을 생각해보고 어떤데이터를 넣을건지 결정해서 하나의 문장을 만들어볼것. ex) double korea_human = 51820000;

댓글