데이터 저장하기 : 변수와 상수

 : 컴퓨터 프로그램은 일반적으로 여러 가지 종류의 데이터를 다루는데, 동시에 데이터를 저장하기 위한 수단을 필요로 한다. 이런 데이터나 값은 숫자나 문자가 될 수 있을 것이다. 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)는 컴퓨터의 기억 장소에 대한 기본적인 단위이다. 나중에 ‘메모리 다루기’에서 상세히 설명하고, 여기에서는 특정 형태의 데이터를 저장하는 데 필요한 바이트의 양을 알아보겠다.


    ■ 데이터를 저장하는 데 필요한 메모리의 양

   데이터의 형태

필요한 바이트 수

   문자 x

 1

   숫자 500

 2

   숫자 241.105

 4

   구절 Yeach Yourself C

 17

   한 페이지의 내용

 대략적으로 3000



컴퓨터의 내의 RAM은 순서대로 다루어진다. 즉, 하나의 바이트는 다른 것 다음에 위치되고, 그 다음에는 또 다른 바이트가 위치되는 것이다. 메모리의 각 바이트는 독특한 주소(address)를 가지고 있으며, 주소는 메모리 내에서 특정 바이트를 다른 것과 구분하는 데 사용된다. 메모리의 주소는 0부터 시적하여 시스템에 설치된 메모리의 마지막까지 순서대로 주어진다. 프로그래머는 메모리에 주소를 할당하는 것에 대해서 염려할 필요가 없다. 주소를 할당하는 일은 모두 C컴파일러에 의해서 자동으로 처리된다. 컴퓨터의 RAM은 어디에 사용되는 것일까? RAM은 여러 가지 용도를 가질 수 있지만, 여기에서는 데이터를 저장하는 데 사용된다는 것만을 알아둘 필요가 있다. 데이터(data)는 C프로그램이 사용되는 특정 형태의 자료를 말한다. 사용자가 주소록을 관리하거나, 가계부를 정리하거나 또는 정육점에서 육류의 시세를 관리하는 등 어떤 목적을 가지고 있든지, 프로그램에서 사용되는 사람의 이름, 전화번호, 수입, 지출, 잔액, 육류의 가격 등과 같은 자료는 프로그램이 실행되는 동안 컴퓨터 내의 RAM에 저장된다. 지금까지 메모리에 대해 간단히 알아봤다. 이제는 C프로그래밍에 대한 내용으로 돌아가서, C가 자료를 저장하기 위해서 메모리를 사용하는 방법에 대해 알아보도록 하겠다


2. 변 수

 : 변수(varibles)는 컴퓨터의 메모리 내에서 독특한 이름을 가지고 있는 데이터 저장영역을 말한다. 변수의 이름을 프로그램 내에서 사용하면, 실제로 해당 메모리 영역에 저장된 데이터를 사용할 수 있게 된다.


2.1 변수의 이름

 : C프로그램 내에서 변수를 사용하려면, 우선 변수의 이름을 명명하는 방법을 알 필요가 있다. C에서 사용되는 변수의 이름은 다음과 같은 규칙이 따른다.

      - 변수의 이름은 문자, 숫자, 밑줄을 포함할 수 있다.

      - 변수의 이름에서 첫 번째 문자는 영문자(letter)가 되어야 한다. 또한, 밑줄을 

      - 첫 번째 문자로 사용할 수 있지만 가능하다면 사용하지 않는 것이 좋다.

      - 대문자나 소문자의 구분에는 중요한 차이가 있다. 그래서 count와 Count라는 두 개의 이름은 서로 다른 변수이다.

      - C의 키워드를 변수의 이름으로 사용할 수 없다. 키워드(keyword)는 C 언어의 일부분으로 사용되는 독특한 명령어를 말한다.


다음은 사용할 수 있거나 사용할 수 없는 변수 이름의 예이다.

변수 이름

                              허용 여부

Percent

허용됨.

y2x5_fg7h

허용됨.

annual_profit

허용됨.

_1990_tax

허용되지만 사용하지 않는 것이 좋다.

savings#account

허용 안됨 - 사용할 수 없는 문자(#)가 포함되어 있다.

double

허용 안됨 - C의 키워드이다.

9winter

허용 안됨 - 첫 번째 문자가 숫자이다.


C는 대문자와 소문자를 구별하므로, 세 개의 변수 이름 percent, PERCENT, Percent는 서로 다른 세 개의 변수를 뜻하는 것으로 간주된다. 반드시 필요하지는 않지만, C프로그래머들은 대개의 경우 소문자만을 사용하여 변수를 정의한다. C의 변수 이름은 대부분의 컴파일러에서 31까지의 길이를 가진다. 변수의 이름이 더욱 길어질 수 있지만, 컴파일러는 사용된 이름에서 처음 31자만을 받아들인다. 이런 특징을 이용하여 변수에 저장되는 데이터의 내용을 알 수 있도록 변수의 이름을 지정할 수 있다.
2.2 숫자 변수의 종류
 : C는 여러 가지 형태의 숫자 변수를 제공해준다. 서로 다른 숫자 변수는 서로 다른 양의 메모리 영역을 필요로 하고 특정 연산 동작을 수행하는 경우에도 변수에 따라 결과가 달라지므로 다양한 형태의 변수가 필요하다. 예를 들어, 1, 199, -8과 같은 작은 정수값을 저장하기 위해서는 적은 양의 메모리가 필요하고, 덧셈이나 곱셈과 같은 연산 동작도 더욱 빠르게 수행된다. 프로그래머는 프로그램을 작성할 때 적절한 변수의 형태를 선택하여 프로그램이 효과적 으로 실행되게 할 수 있다. C의 숫자 변수는 크게 다음과 같은 두 종류로 구분할 수 있다.

 - 정수형 변수(Integer variables)는 소수 부분이 전혀 없는 값을 저장한다. 즉, 음수와 양수만으로 구성되는 값을 가진다. 정수형 변수는 다시 두 가지로 나누어진다. 부호 있는 정수형 변수는 양수나 음수 값을 모두 저장할 수 있지만 부호 없는 변수에는 0과 양수값만을 저장할 수 있다.

 - 부동 소수형 변수(Floating-point variables)는 소수 부분을 가지는 숫자값을 저장하는 변수이다. 즉, 실수 값이 저장된다.

이러한 각각의 형태에는 여러 가지 특정 변수의 형태가 포함된다. 상세한 구분 내용은 <표 3.2>에 요약되어있다. 또한, 여기서 설명되는 내용은 16비트 데이터 구조를 가지고 있는 컴퓨터를 기본으로 하는 것이다. 표에 나타나 있는 메모리의 양은 바이트 단위이다.

<표 3.2> C의 숫자 변수 형태

변수의 이름

  키워드

 메모리의 양

 값의 범위

문자형

 char

  1

 -128 ~ 127

정수형

 int

  2

 -32,768 ~ 32,767

short형 정수

 short

  2

 -32,768 ~ 32,767

long형 정수

 long

  4

 -2,147,483,648 ~ 2,147,483,647

부호 없는 문자형

 unsigned char

  1

 0 ~ 255

부호 없는 정수형

 unsigned int

  2

 0 ~ 65,535

부호 없는 short형 정수

 unsigned short

  2

 0 ~ 65,535

부호 없는 long형 정수

 unsigned long

  4

 0 ~ 4,294,967,295

단정도 부동 소수형

 float

  4

 1.2E-38 ~ 3.4E38 ①

배정도 부동 소수형

 double

  8

 2.2E-308 ~ 1.8E308 ②

① 대략적인 범위이며 정밀도는 7자리까지이다.

② 대략적인 범위이며 정밀도는 19자리까지이다.


<표 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> 여러 가지 형태의 변수 크기를 출력하는 프로그램

       #include <stdio.h>
       

       main()
       {
         printf(“\nA char            is %d bytes”, sizeof(char));
         printf(“\nA int              is %d bytes”, sizeof(int));
         printf(“\nA short           is %d bytes”, sizeof(short));

         printf(“\nA long            is %d bytes”, sizeof(long));
         printf(“\nAn unsigned char  is %d bytes”, sizeof(unsigned char));
         printf(“\nAn unsigned int    is %d bytes”, sizeof(unsigned int));
         printf(“\nAn unsigned short is %d bytes”, sizeof(unsigned short));
         printf(“\nAn unsigned long  is %d bytes”, sizeof(unsigned long));
         printf(“\nAn float           is %d bytes”, sizeof(float));
         printf(“\nAn double         is %d bytes”, sizeof(double));
         return 0;
       }


           -> 출력
           A char            is 1 bytes
           A int              is 2 bytes
           A short           is 2 bytes
           A long            is 4 bytes
           An unsigned char  is 1 bytes
           An unsigned int    is 2 bytes
           An unsigned short is 2 bytes
           An unsigned long  is 4 bytes
           A float           is 4 bytes
           A double          is 8 bytes
  

2.3 변수의 선언
 : C 프로그램에서 변수를 사용하기 위해서는 변수를 선언해야 한다. 변수의 선언 (variable declaration)은 컴파일러에게 변수의 이름과 형태를 알려주며, 선택적으로 변수에 특정 값을 저장하여 초기화하는 것도 가능하다. 만약 프로그램에서 이전에 선언되지 않은 변수를 사용하려고 한다면, 컴파일러는 에러 메시지를 출력할 것이다. 변수의 선언은 다음과 같은 형식으로 수행된다.
             typename      varname;

typename은 변수의 형태로, <표 3.2>에 나타나 있는 키워드의 하나가 사용된다. 변수의 이름인 varname은 앞에서 설명했던 변수 이름의 규칙을 따르는 것이어야 한다. 쉼표로 각 변수의 이름을 구분하여 한 줄에 동일한 형태의 여러 변수를 선언할 수도 있다.

             int count, number, start;
             float percent, total;


2.4 typedef 키워드
 : typedef 키워드는 이미 존재하는 데이터 형에 새로운 이름을 지정하는데 사용된다. 즉, typedef는 특정변수형의 동의어를 정의한다. 예를 들어, 다음 문장은

             typedef int   integer;

int형에 대한 동의어로 integer라는 변수형을 정의한다. 이제 int형 변수를 정의하기 위해서 다음 예제와 같이 integer를 사용할 수 있을 것이다.

             Integer count;

typedef는 새로운 데이터형을 생성하는 것이 아니라 이미 존재하는 데이터형에 대한 다른 이름을 정의한다는 것에 주의하기 바란다.
  

2.5 숫자 변수의 초기화 
 : 변수를 선언하는 것은 컴파일러에게 변수를 위한 저장 영역을 보존하도록 지시하는 것이다. 그러나 보존된 공간에 저장되는 변수의 실제 값은 정의되지 않는다. 실제 값은 0이 될 수도 있고 다른 어떤 ‘임의의’ 값이 될 수도 있다. 그래서 변수를 사용하기 전에는 항상 원하는 값으로 초기화해야 한다. 변수의 초기화는 다음과 같이 할당문을 사용하여 변수 선언문과 별도로 수행할 수 있다.

             Int count;
             Count = 0;    ‘ count를 0으로 초기화

또한, 변수를 선언할 때 직접 초기화할 수도 있다. 이렇게 하려면 변수 선언문에서 변수의 이름을 입력한 다음에 등호(=)와 함께 원하는 초기값을 지정하면 된다.

             Int count = 0;
             Double percent = 0.01, taxrate = 28.5;

      변수를 초기화 할 때에는 허용되는 범위를 벗어난 값을 사용하지 않도록 주의하기 바란다. 다음은 범위를 벗어난 값이 사용되는 초기화의 예이다.

             Int weight = 100000;
             Unsigned int value = -2500;

      C 컴파일러는 이런 에러를 찾아주지 않는다. 프로그램은 이상 없이 컴파일되고 링크 되지만, 실제로 실행하면 예상하지 못한 결과를 얻는다.
 
3. 상 수
 : 상수(constant)는 변수와 마찬가지로 프로그램에서 사용되는 데이터를 저장하는 메모리 영역이다. 그러나 변수와는 달리, 상수로 지정되는 값은 프로그램이 실행되는 동안 바뀌지 않는다. C는 각각 독특한 용도를 가지고 있는 두 가지 형태의 상수를  제공한다.
 

3.1 실제 상수
 : 실제 상수(literal constant)는 필요할 때마다 소스 코드에 직접 포함되는 실제 값이다. 다음은 실제 상수의 사용 예이다.

            Int count = 20;
            Float tax_rate = 0.28;

      20과 0.28은 실제 상수이다. 예제에서는 이런 갓을 변수 count와 tax_rate에 저장하고 있다. 두 변째 예제에서는 소수점이 사용되는 반면에, 처음 예제에서는 소수점이 사용되지 않고 있다. 소수점은 부동소수형 상수와 정수형 상수를 구분하는 기준이 된다. 소수점이 포함되어 있는 상수는 부동 소수형 상수(floating-point constant)이며, C 컴파일러에서 배정도형 숫자로 취급된다. 부동 소수형 상수는 다음의 예제에서처럼 일반적인 십 진 표기법으로 사용될 수 있다.

            123.456
            0.019
            100.

      세 번째 예제의 상수 100.은 소수 부분을 가지고 있지 않은 정수이지만 소수점을 포함하고 있다. 소수점은 C컴파일러가 상수를 배정도형으로 취급하게 해준다. 소수점이 없는 경우에는 일반적으로 정수형 상수로 취급한다. 또한, 부동 소수형 상수는 공학 표기법(scientific notation)으로 사용될 수 있다. 공학 표기법에서는 숫자를 10의 제곱 형태로 표시한다. 공학 표기법은 아주 크거나 작은 값을 나타내는 데 유용하다. C에서는 공학 표기법을 십진수, 문자 E나e, 제곱수의 형태로 사용한다. 다음은 몇 가지 예이다.

       - 1.23E2  : 1.23의 기본 값에 10을 2번 곱한 123
       - 4.08e6  : 4.08의 기본 값에 10을 6번 곱한 4,080,000
       - 0.85e-4 : 0.85의 기본 값에 1/10을 4번 곱한 0.000085
         
소수점이 없는 상수는 컴파일러에서 정수형 숫자로 처리된다. 정수형 상수는 다음과 같이 여러 가지 방법으로 표현할 수 있다.

- 0이 아닌 다른 어떤 숫자로 시작하는 상수는 십 진(decimal) 정수로 처리된다. 십 진 정수는 10을 기본으로 하는 십진수 체계를 말한다. 십 진 상수는 숫자 0에서부터 9까지를 사용하며, 숫자 앞에 +나 ?와 같은 부호를 가질 수 있다. 부호가 없을 때 상수는 양수 값으로 간주된다.

- 숫자 0으로 시작하는 상수는 8진(octal) 정수로 처리된다. 8진 정수는 8을 기본으로 하는 8진수 체계를 말한다. 8진 상수는 숫자 0에서부터 7까지를 사용하며, 숫자 앞에 +나 ?와 같은 부호를 가질 수 있다.

- 0x나 0X로 시작하는 상수는 16진(hexadecimal) 정수로 처리된다. 16진 정수는 16을 기본으로 하는 16진수 체계를 말한다. 16진수 상수는 숫자 0에서부터 9까지와 문자 A~F까지를 사용하며, 숫자 앞에 +나 ?와 같은 부호를 가질 수 있다.

3.2 기호 상수
 : 기호 상수(symbolic constant)는 프로그램 내에서 독특한 이름이나 기호로 표현되는 상수를 말한다. 실제 상수와 마찬가지로 기호 상수의 내용은 변경될 수 없다. 프로그램 내에서 상수의 값을 사용할 필요가 있을 때마다 기호 상수의 이름을 변수의 이름처럼 사용할 수 있다. 기호 상수의 실제 값은 상수를 처음 정의할 때에만 입력해주면 된다. 다음의 예제에서도 알 수 있듯이, 기호 상수는 실제 상수에 비해서 두 가지 중요한 장점을 제공한다. 여러 가지 기하학적인 계산을 수행하는 프로그램을 작성한다고 가정하자. 프로그램은 연산을 수행하기 위해서 π(3.14159)를 자주 사용하게 된다. 참고로, π는 원의 지름에 대한 원주의 비율이다. 예를 들어, radius라는 반지름을 가지는 원의 원주와 면적을 계산하기 위해서는 다음과 같은 프로그램을 작성할 수 있을 것이다.

             Circumference = 3.14159 * (2 * radius);
             Area = 3.14159 * (radius) * (radius)

여기서 사용된 *는 C에서 곱셈 연산자로 사용된다. 첫 번째 문장은 ‘변수 radius에 저장된 값에 2를 곱하고 나서 그 결과에 3.14159를 곱한다. 그리고 계산된 최종 결과를 circumference라는 이름의 변수에 저장한다. 그러나, PI라는 이름을 가지고 3.14라는 값을 저장하는 기호 상수를 정의하면 앞의 예제를 다음과 같이 작성할 수 있다.

             Circumference = PI * (2 * radius); 
             Area = PI * (radius) * (radius);

      이것은 더욱 이해하기가 쉽다. 3.14라는 값이 왜 사용되었는지 의문을 가졌던 사람도 상수 PI를 보고 프로그램의 내용을 더욱 명확히 알 수 있을 것이다. 기호 상수의 다른 한 가지 장점은 상수의 값을 변경할 필요가 있을 때 더욱 중요한 것이다. 앞에서 사용된 예제를 다시 살펴보자. 계산 결과를 더욱 정확하게 하게 하기 위해서 3.14라는 값 대신에 더욱 정확하게 3.14159의 값을 사용하기 원한다고 하자. 만약 π의 값을 실제 상수의 형태로 입력했다면, 프로그래머는 전체 프로그램에서 3.14를 3.14159로 변경해야 할 것이다. 그러나 기호 상수를 사용했다면 단지 상수가 정의된 부분에서만 값을 변경해주면 된다. C는 기호 상수를 정의하기 위한 두 가지 방법으로 #define 지시어와 const 키워드를 제공한다.
#define 지시어는 다음과 같이 사용된다.

             #define CONSTNAME literal

이 문장은 literal이라는 값을 가지는 CONSTNAME라는 이름의 기호 상수를 정의한다. literal은 앞에서 설명했듯이 실제 상수를 나타낸다. CONSTNAME은 변수의 이름에 대해서 설명했던 것과 같은 규칙을 따른다. 일반적으로, 기호 상수의 이름에는 대문자가 사용된다. 이런 특징은 소문자를 주로 사용하는 변수의 이름과 분명하게 구분할 수 있도록 해준다. 앞에서 사용된 예제에서 필요한 #define 지시어는 다음과 같은 내용이 될 것이다.

             #define PI 3.14159

#define문은 세미콜론(;)으로 끝나지 않는다는 것을 기억하기 바람. #define은 소스 코드 내의 어느 위치에서든 사용할 수 있지만, 실제로는 #define 지시어 다음에 있는 코드에만 영향을 준다. 대부분의 프로그래머는 모든 #define문을 파일의 시작 부분과 main() 함수의 시작 사이에 위치시킨다.

▶ #define의 적용 범위
 : #define 지시어가 실제로 수행하는 것은 컴퓨터에게 ‘소스 코드 내의 CONSTNAME을 literal로 대치하여 사용하라’는 것을 지시하는 것이다. 결과는 에디터에서 소스 코드를 입력하고 수동으로 직접 변경하는 것과 동일하다. #define은 큰 따옴표 내의 문장에서 일부분으로 나타나는 것이나 또는 프로그램 주석문의 내부에서 사용되는 내용을 대치하지 않는다는 것을 기억하기 바란다. 예를 들어, 다음 코드에서 두 번째 줄과 세 번째 줄의 PI는 바뀌지 않을 것이다.

             #define PI 3.14159
             #define PIPETTE 100

▶ const 키워드로 상수 정의하기
 : 기호 상수를 정의하는 다른 한 가지 방법은 const 키워드를 사용하는 것이다. const는 어떤 변수 선언에도 사용할 수 있는 키워드이다. const를 사용하여 선언한 변수는 프로그램이 실행되는 동안 변경할 수 없고, 단지 변수를 초기화하는 것만 가능하다. 다음은 몇 가지 예이다.

             Const int   count = 100;
             Const long debt = 12000000, float tax_rate = 0.21;

const는 선언문에 포함되어 있는 모든 변수에 영향을 준다. 두 번째 중에 있는 debt와 tax_rate는 기호 상수이다. 만약 프로그램에서 const로 선언된 변수의 값을 변경하려고 한다면, 컴파일러는 에러 메시지를 나타낼 것다. 예를 들어, 다음과 같은 결과가 나타난다.

             Const int count = 100;
             Count = 200;   ‘ 이것은 컴파일되지 않는다. 
          상수형으로 정의된 변수의 값을 변경하지 않도록 주의해야 한다.

#define 지시어로 생성되는 기호 상수와 const키워드를 통해서 정의되는 기호 상수의 차이점은 무엇일까? 차이점은 포인터와 변수의 범위에 관련된 것이다. 포인터와 변수의 범위는 C 프로그래밍에서 중요한 두 가지 사항으로 "포인터에 대해서"와 "변수의 범위"에서 상세히 설명할 것이다.  이제 변수를 선언하고 실제 상수와 기호 상수를 사용하는 프로그램의 예제를 살펴보도록 하겠다. <리스트 3.2>에있는 프로그램은 사용자에게 파운드 단위의 몸무게와 생일을 입력하도록 요구할 것이다. 그리고 나서 몸무게를 그램(g)단위로 환산하고, 2002년에는 나이가 어떻게 되는지 계산하여 결과를 출력한다.

<리스트 3.2> 변수화 상수의 사용 예를 보여주는 프로그램

      #include <stdio.h>
      #define GRAMS_PER_POUND 454
      const int NEXT_CENTURY = 2002;
      long weight_in_grams, weight_in_pounds;
      int year_of_birth, age_int_2002;
      main()
      {
          printf(“Enter your weight in pounds: “);
          scanf(“%d”, &weight_in_pounds);
          printf(“Enter your year of birth: “);

          scanf(“%d”, &year_of_birth);

          weight_in_grams = weight_in_pounds * GRAMS_PER_POUND;
          age_in_2002 = NEXT_CENTURY - year_of_birth;

          printf(“\nYour weight in grams = %ld.”, weight_in_grams);
          printf(“\nIn 2002 you will be %d years old.\n”, age_in_2002);

          return 0;
      }


      -> 입력 / 출력

          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

'C 언어' 카테고리의 다른 글

1장 C 프로그래밍의 기초  (0) 2019.06.02
2장 C 프로그램의 구성 요소  (0) 2019.06.02
4장 문장, 수식, 연산자  (0) 2019.06.02
5장 함수의 기본  (0) 2019.06.02
6장 기본적인 프로그램 제어문  (0) 2019.06.02

+ Recent posts