데이터 저장하기 : 변수와 상수
: 컴퓨터 프로그램은 일반적으로 여러 가지 종류의 데이터를 다루는데, 동시에 데이터를 저장하기 위한 수단을 필요로 한다. 이런 데이터나 값은 숫자나 문자가 될 수 있을 것이다. C에서는 숫자값을 저장하기 위한 두 가지 방법으로 변수와 상수를 제공하고, 변수와 상수는 다시 여러 가지 종류로 세분된다. 변수는 프로그램이 실행되는 동안에도 내용을 변경할 수 있는 데이터 저장 영역인 반면에, 상수는 변경할 수 없는 고정된 값을 가지게 된다. 여기서 배울 내용은
▶ C에서 변수의 이름을 정의하는 방법
▶ 여러 가지 종류의 숫자 변수
▶ 문자 변수와 숫자 변수의 차이점과 유사점
▶ 숫자 변수의 선언과 초기화
▶ C에서 사용되는 두 가지 형태의 숫자 상수
이 내용을 이해하기 위해선 컴퓨터의 메모리가 동작하는 방법에 대해서 알아둘 필요가 있다.
1. 컴퓨터의 메모리
: 컴퓨터가 실행되는 동안 사용되는 자료나 데이터는 읽고 쓰기가 가능한 RAM(Random Access Memory)에 저장된다. RAM은 컴퓨터 내에서 집적 회로나 칩(chips)의 형태로 존재한다. RAM은 휘발성(volatile)이 있으므로, 필요할 때마다 저장된 내용을 지우고 새로운 자료로 대치할 수 있다. 또한 RAM은 컴퓨터가 사용되는 동안에만 자료를 ‘기억하며’ 컴퓨터의 전원이 차단되면 모든 내용을 잃게 된다. 각각의 컴퓨터에는 서로 다른 일정량의 RAM이 설치되어 있다. 시스템에 설치되는 RAM은 대개의 경우 521KB, 640KB, 2MB, 4MB, 8MB와 같이 킬로 바이트(KB)나 메가 바이트(MB) 단위로 사용된다. 1킬로 바이트의 메모리는 1,024바이트로 구성된다. 그래서 640KB의 메모리를 가지고 있는 시스템은 실제로 640*1,024인 655,360바이트의 RAM을 가지는 것이다. 1메가 바이트는 1,024킬로 바이트이다. 4MB의 메모리를 가지는 시스템은 4,096, 즉 4,194,304바이트의 RAM을 가지는 셈이다. 바이트(byte)는 컴퓨터의 기억 장소에 대한 기본적인 단위이다. 나중에 ‘메모리 다루기’에서 상세히 설명하고, 여기에서는 특정 형태의 데이터를 저장하는 데 필요한 바이트의 양을 알아보겠다.
■ 데이터를 저장하는 데 필요한 메모리의 양
컴퓨터의 내의 RAM은 순서대로 다루어진다. 즉, 하나의 바이트는 다른 것 다음에 위치되고, 그 다음에는 또 다른 바이트가 위치되는 것이다. 메모리의 각 바이트는 독특한 주소(address)를 가지고 있으며, 주소는 메모리 내에서 특정 바이트를 다른 것과 구분하는 데 사용된다. 메모리의 주소는 0부터 시적하여 시스템에 설치된 메모리의 마지막까지 순서대로 주어진다. 프로그래머는 메모리에 주소를 할당하는 것에 대해서 염려할 필요가 없다. 주소를 할당하는 일은 모두 C컴파일러에 의해서 자동으로 처리된다. 컴퓨터의 RAM은 어디에 사용되는 것일까? RAM은 여러 가지 용도를 가질 수 있지만, 여기에서는 데이터를 저장하는 데 사용된다는 것만을 알아둘 필요가 있다. 데이터(data)는 C프로그램이 사용되는 특정 형태의 자료를 말한다. 사용자가 주소록을 관리하거나, 가계부를 정리하거나 또는 정육점에서 육류의 시세를 관리하는 등 어떤 목적을 가지고 있든지, 프로그램에서 사용되는 사람의 이름, 전화번호, 수입, 지출, 잔액, 육류의 가격 등과 같은 자료는 프로그램이 실행되는 동안 컴퓨터 내의 RAM에 저장된다. 지금까지 메모리에 대해 간단히 알아봤다. 이제는 C프로그래밍에 대한 내용으로 돌아가서, C가 자료를 저장하기 위해서 메모리를 사용하는 방법에 대해 알아보도록 하겠다
2. 변 수
: 변수(varibles)는 컴퓨터의 메모리 내에서 독특한 이름을 가지고 있는 데이터 저장영역을 말한다. 변수의 이름을 프로그램 내에서 사용하면, 실제로 해당 메모리 영역에 저장된 데이터를 사용할 수 있게 된다.
2.1 변수의 이름
: C프로그램 내에서 변수를 사용하려면, 우선 변수의 이름을 명명하는 방법을 알 필요가 있다. C에서 사용되는 변수의 이름은 다음과 같은 규칙이 따른다.
- 변수의 이름은 문자, 숫자, 밑줄을 포함할 수 있다.
- 변수의 이름에서 첫 번째 문자는 영문자(letter)가 되어야 한다. 또한, 밑줄을
- 첫 번째 문자로 사용할 수 있지만 가능하다면 사용하지 않는 것이 좋다.
- 대문자나 소문자의 구분에는 중요한 차이가 있다. 그래서 count와 Count라는 두 개의 이름은 서로 다른 변수이다.
- C의 키워드를 변수의 이름으로 사용할 수 없다. 키워드(keyword)는 C 언어의 일부분으로 사용되는 독특한 명령어를 말한다.
다음은 사용할 수 있거나 사용할 수 없는 변수 이름의 예이다.
C는 대문자와 소문자를 구별하므로, 세 개의 변수 이름 percent, PERCENT, Percent는 서로 다른 세 개의 변수를 뜻하는 것으로 간주된다. 반드시 필요하지는 않지만, C프로그래머들은 대개의 경우 소문자만을 사용하여 변수를 정의한다. C의 변수 이름은 대부분의 컴파일러에서 31까지의 길이를 가진다. 변수의 이름이 더욱 길어질 수 있지만, 컴파일러는 사용된 이름에서 처음 31자만을 받아들인다. 이런 특징을 이용하여 변수에 저장되는 데이터의 내용을 알 수 있도록 변수의 이름을 지정할 수 있다.
<표 3.2>에 나타나 있는 대략적인 범위(approximate range)는 주어진 변수가 가질 수 있는 최대값과 최소값을 뜻한다. 이런 변수의 정확한 범위는 여기서 다루기에 복잡하므로 생략하겠다. 정밀도(precision)는 변수의 정확성을 말하는 것이다. 예를 들어, 1/3을 계산할 경우의 결과는 3이 무한 대로 계속되는 0.3333....이된다. 7의 정밀도를 가지는 변수에서 이 결과는 7자리까지의 값(0.3333333)을 저장하는 것이다.
<표 3.2>를 보면 int형과 short형이 동일하다는 것을 알 수 있을 것이다. 그렇다면 두 가지 다른 형태가 존재하는 이유는 무엇일까? 16비트의 IBM PC호환 기종에서는 int와 short가 동일한 것으로 처리되지만, 다른 하드웨어 기종에서는 달라질 수 있다. 예를 들어, VAX 시스템에서는 short와 int가 동일하지 않은 것으로 처리된다. short는 2바이트이지만 int는 4바이트를 사용하게 된다. C는 융통성과 이식성이 뛰어난 언어이므로, 두 가지 형태에 대해 다른 키워드를 제공한다는 것을 기억할 필요가 있다. 만약 PC 호환 기종에서 C언어를 사용한다면, int와 short를 상호 교환하며 사용할 수 있을 것이다. 정수형 변수를 부호 있는 형태로 지정하기 위해서는 아무런 키워드도 필요하지 않다. 정수형 변수는 이미 부호가 있는 형태로 설정되어 있다. 그러나 필요하다면 분명하게 지정하기 위해서 signed 키워드를 포함시킬 수 있다. <표 3.2>에 나타나 있는 키워드는 잠시 후에 변수 선언을 설명할 때 사용할 것이다. <리스트 3.1>의 프로그램은 특정 컴퓨터 상에서 변수의 크기를 확인할 수 있도록 도와줄 것이다. 프로그램의 결과가 리스트 다음에 있는 결과와 다르더라도 놀랄 필요는 없다.
<리스트 3.1> 여러 가지 형태의 변수 크기를 출력하는 프로그램
-> 출력
-> 입력 / 출력
Enter your weight in pounds: 175
Enter your year of birth: 1975
Your weight in grams = 79450
In 2002 you will be 27 years old
'pc관련 > C언어' 카테고리의 다른 글
숫자배열 사용하기 (0) | 2019.03.20 |
---|---|
C언어-프로그램제어문 (0) | 2019.03.17 |
함수의 기본 (0) | 2019.03.16 |
C 프로그램의 구성 요소 (0) | 2019.03.10 |
c프로그램밍 기초 (0) | 2019.03.09 |