컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Sunday, March 18, 2007

C언어] 상수 정의 방법, 상수 의미; Define Constant


프로그래밍에서, 상수란 2가지 의미로 사용됩니다. 예를 들어
int i = 555;
이 경우 555 는 상수이고 더 정확하게 말하자면 "리터럴(Literal)"입니다. 어떤 값을 "문자 그대로" 적어 주었다는 뜻입니다. i의 값은 변할 수 있지만, 555 라는 값은 변할 수 없으므로 상수입니다.

그런데 이 게시물에서 말하는 상수(Constant)란, 일종의 변수인데 다만 값이 변하지 않는 것입니다.

* 값이 변하면 위험한 경우에 상수를 사용합니다. 예를 들어 원주율의 값은 항상 3.14... 이기에 상수로 지정해 놓고 사용합니다. 잘못해서 파이값이 5.14 등으로 변경되어 버린다면 심각한 에러가 발생할 것입니다. (참고: ▶▶ C언어] 원주율(PI;파이) 근사값 상수, M_PI 출력 예제)

* 기억하기 힘든 값에 쉬운 이름을 붙일 때 상수를 사용합니다. 예를 들어 소스에서 782457.1554 이런 숫자가 많이 등장할 경우, 782457.1554 이 숫자에 MY_NUMBER 같은 알기 쉬운 이름을 붙여 놓으면 782457.1554 이런 숫자를 직접 타이핑하지 않아도 MY_NUMBER 만 기술하면 자동으로 782457.1554 라는 숫자를 사용할 수 있습니다.

* 어떤 값을 한꺼번에 쉽게 변경하기 위해 상수를 사용합니다. 예를 들어, 소스에서 메모리 버퍼 크기를 의미하는 10000 이런 숫자가 많이 사용되었는데 이 값을 모두 50000 으로 일일이 변경하려면 힘들 것입니다. 이때는

#define SIZE 10000

이렇게 SIZE 라는 상수에 10000 을 지정한 후, 10000 대신에 SIZE 를 사용하고, 이 값을 50000 으로 고치려면 위의 한 줄만

#define SIZE 50000

이렇게 고치면 됩니다.


C에서 상수는 #define 문으로 만들 수 있고, C++의 경우에는 const 라는 예약어(키워드)로 만들 수도 있습니다. 아래 예제와 같습니다.


상수 선언 예제


소스 파일명: example.cpp
#include <stdio.h>

// C와 C++ 에서 모두 사용 가능한 방법
// 컴파일 직전에 소스의 모든 COOL 을
// 123 으로 자동 치환함
//
// 끝에 세미콜론(;)이 없고
// 등호(=)도 없어야 함
#define COOL 123



int main(void) {

  // "읽기 전용 변수"로서의 상수
  // 이것은 C++ 가 아닌 순수한 C컴파일러에서는 안 됨
  // 앞에 const 만 붙이면 됨.
  // 자료형을 지정할 수 있는 장점 있음
  // 일반 변수처럼, 세미콜론과 등호가 꼭 필요
  const int FOO = 999;
  const double MY_PI = 3.14;


  printf("%d\n", COOL);
  // 출력 결과: 123

  printf("%d\n", FOO);
  // 출력 결과: 999

  printf("%f\n", MY_PI);
  // 출력 결과: 3.140000



  return 0;
}



이미 만들어진 상수에, 값을 대입할 수는 없습니다.

COOL = 1;
이것은
123 = 1;
이것과 똑같기 때문에
error C2106: '=' : left operand must be l-value 이런 에러가 납니다.


만약 이렇게
FOO = 1;
const 상수에 값을 대입하려고 하면
error C2166: l-value specifies const object 이런 에러가 납니다.


참고로, 상수명은 모두 대문자로 하는 것이 관례입니다. 한눈에 봐도 상수라는 것을 쉽게 알 수 있게 하기 위해서입니다.


0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top