프로그래밍[Univ]/프로그래밍 언어론

[프로그래밍 언어론] Data Type part 4 - Union

Cloud Travel 2011. 10. 28. 02:48
* Union(ppt를 좀 많이보자... 설명의 한계)
 - 하나의 메모리에 두개 이상의 변수로 사용 하는 것
 - 메모리 절약과 공통으로 공유할 정보를 효율적으로 공유할 목적으로 만듬.
  ex) 1024 주소를 a,b,c,d 변수가 동시에 가르키고 있다면, a = 24;를 하면 b = c = d = 24;도 같이 실행됨
 - 설계 이슈
 ⓐ Type checking을 해줄 것인가? 
  > 타입 체킹을 해주면 신뢰성이 높아진다.
  > 타입 체킹을 하지 않을 시 생기는 문제점
  > 만약, 어떤 주소를 int형 a와 float형 b와 char형 c변수가 동시에 가르키고 있을때, b = 1.5를 해주면
     a = 1로 저장이 되면서 0.5의 데이터 손실이 생기면서 신뢰성이 크게 떨어진다.
   ex) (In FORTRAN) EQUIVALENCE(I,J,K,L) // FORTRAN에서 I~N까지 시작하는 start하는 변수는 정수
                              EQUIVALENCE(A,I,Z) // 타입이 다를 경우
                               // 포트란의 경우는 타입체킹을 하지 않는다.
                              A = 2.3;           // I = 2 가 들어가므로 데이터 손실이 발생한다.
         (In Ada) discriminated unions - 누구에 의해 변했는지 Tag를 이용하여 구분해준다.
                                                    - Tag를 이용하여 Type Checking을 해준다. (ppt 참고)
 ⓑ Union은 새로운 타입인가? Record의 타입의 파생인가?