* 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의 타입의 파생인가?
- 하나의 메모리에 두개 이상의 변수로 사용 하는 것
- 메모리 절약과 공통으로 공유할 정보를 효율적으로 공유할 목적으로 만듬.
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의 타입의 파생인가?