일반 상수

일반 상수 (Ordinary constants)

프로그램에서 값이 절대 바뀌지 않는 대상이라면 상수로 선언해 두는 게 편리해요. 이번 절에서는 Free Pascal의 기본적인 상수인 일반 상수(ordinary constant) 를 어떻게 선언하고, 어떤 규칙이 따라오는지 알아볼게요.

출처: 문서

본문

일반 상수 선언은 식별자 이름 다음에 = 기호를 붙이고, 그 뒤에 숫자·문자·불리언·열거값을 적절히 조합한 선택적 표현식이 따라오는 형태로 만들어져요.

컴파일러는 상수 선언 안의 표현식을 컴파일 시점에 평가할 수 있어야 해요. 즉 런타임 라이브러리의 대부분의 함수는 상수 선언에 쓸 수 없어요. 다만 +, -, *, /, not, and, or, div, mod, ord, chr, sizeof, pi, int, trunc, round, frac, odd 같은 연산자는 사용할 수 있어요.

코드에서 이미 선언된 일반 상수를 쓰면 컴파일러는 상수 이름 대신 실제 값을 넣어요. 예를 들어 다음 코드는:

Const

One = 1;

begin

Writeln(One);

end.

이렇게 상수 값을 직접 쓴 코드와 완전히 동일한 코드를 만들어요:

begin

Writeln(1);

end.

선언할 수 있는 상수의 타입은 다음과 같아요:

  • 순서형(Ordinal) 타입
  • 집합(Set) 타입
  • 포인터 타입 — 단, 허용되는 값은 Nil뿐이에요.
  • 실수(Real) 타입
  • Char
  • String

다음은 모두 유효한 상수 선언들이에요:

Const

e = 2.7182818;  { Real type constant. }

a = 2;          { Ordinal (Integer) type constant. }

c = '4';        { Character type constant. }

s = 'This is a constant string'; {String type constant.}

sc = chr(32)

ls = SizeOf(Longint);

P = Nil;

Ss = [1,2];

일반 상수에 값을 할당하는 것은 허용되지 않아요. 위 선언이 있다면 다음 코드는 컴파일 오류가 나요:

s := 'some other string';

문자열 상수의 타입은 일부 컴파일러 스위치에 따라 달라져요. 특정 타입을 원한다면 다음 절에서 설명하는 **형식 지정 상수(typed constant)**를 쓰면 돼요.

참고로 1.9 버전 이전의 Free Pascal은 64비트 상수를 제대로 지원하지 못했어요. 1.9 버전부터 64비트 상수를 지정할 수 있습니다.

더 알아보기

  • 컴파일러가 상수 대신 값 복사 대신 초기화된 변수를 허용하는 형식 지정 상수형식 지정 상수 절에서 다뤄요.
  • 상수 문자열의 문법에 대해서는 문자 문자열 절을 참고하세요.