변수 타입캐스트

변수 타입캐스트 (Variable typecasts)

변수는 식에서 하나의 인자(factor)로 볼 수 있어요. 그래서 변수도 타입캐스트할 수 있어요. 변수는, 타입이 원래 변수와 같은 크기를 가진다면 어떤 타입으로든 타입캐스트할 수 있어요.

출처: Free Pascal Reference - Variable typecasts

본문

정수 타입을 실수 타입으로(또는 그 반대로) 타입캐스트하는 것은 좋지 않은 생각이에요. 타입 대입 호환성을 활용하고 표준 타입 변환 함수 몇 가지를 쓰는 편이 더 나아요.

변수 타입캐스트는 대입의 양쪽 어디에든 나타날 수 있다는 점을 기억하세요. 즉 다음 두 가지 모두 유효한 타입캐스트예요.

Var
  C : Char;
  B : Byte;

begin
  B:=Byte(C);
  Char(B):=C;
end;

포인터 변수는 프로시저 타입으로 타입캐스트할 수 있지만, 메서드 포인터(method pointer)로는 할 수 없어요.

타입캐스트는 주어진 타입의 식이므로, 그 뒤에 한정자(qualifier)가 따라올 수 있어요.

Type
  TWordRec = Packed Record
    L,H : Byte;
  end;

Var
  P : Pointer;
  W : Word;
  S : String;

begin
  TWordRec(W).L:=$FF;
  TWordRec(W).H:=0;
  S:=TObject(P).ClassName;

더 알아보기

  • 대입의 왼쪽에 쓸 수 없는 값 타입캐스트와 대비해서 보면 좋아요.
  • 메모리 정렬을 다루는 비정렬 타입캐스트도 함께 확인할 수 있어요.