본문 바로가기
게임 개발 일지/내일배움캠프 TIL

[CS] float 와 int / ref 와 out / 접근제한자

by 빛하_ 2024. 1. 15.

 

기술면접 대비하기 #1

 

1. float와 int의 표현 가능한 수의 범위가 다른 이유는 무엇인가요?

key ) 자료형의 내부 구조, 몇 비트를 차지하는지, 메모리 사용 방식 (부호, 지수, 가수 등)

 

자료형(데이터 타입)이 다르기 때문이다.

float는 소수점까지 표현할 수 있는 실수 자료형, int는 소수점이 없는 숫자를 표현할 수 있는 정수 자료형이다.

둘 다 4바이트(32비트)로 크기가 같으나 자료형을 구성하는 bit의 구조가 다른데,

int는 부호와 지수까지만 표현하고 float는 부호와 지수에 더해 소수점 이하의 유효자리까지 표시할 수 있다.

따라서 int는 표현 가능한 범위 내의 숫자는 100%의 정확도로 표현하지만

float는 0에서 멀어질수록 정밀도가 떨어지고 유효값을 넘어가는 경우 근사치를 취하게 된다.

이를 방지하기 위해 double을 사용한다.

 

 

2. 'ref'와 'out'의 사용 시 차이는 무엇인가요?

 

ref와 out은 둘 다 매개변수로 사용하지만 전달 방식에서 차이가 있다.

ref는 메모리 자체를 읽어와서 사용하는 방식이다.

따라서 초기화가 되지 않으면 값을 읽어오지 못해 사용할 수 없다.

매개변수로 넘길 값이 초기화가 되어야만 사용할 수 있다.

out은 메모리 주소로 변수에 접근하며 해당 주소에 값을 할당할 수 있다.

따라서 초기화를 하지 않아도 함수 내부에서 계산을 마치고 값을 출력할 수 있다.

 

즉, 변수가 이미 초기화되어 있고 전달 받은 메서드가 해당 값을 읽고 수정해야한다면 ref를 사용하고

전달 받은 메서드가 초기화와 반환을 모두 수행해야한다면 out을 사용한다.

 

 

3. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.

 

접근제한자란 외부로부터 타입(클래스, 구조체, 인터페이스, 델리게이트 등)

또는 그 타입의 멤버들 (메서드, 이벤트, 필드 등) 의 접근을 제한할 때 사용한다. 

 

1) public : 모든 외부에서 이 타입을 불러올 수 있다. 

2) internal : 동일한 어셈블리 내에 있는 다른 타입들이 접근할 수 있다. (다른 어셈블리는 불가능)

3) protected : 파생 클래스에서 이 클래스 멤버에 접근할 수 있다.

4) private : 동일 클래스 또는 구조체 내의 멤버만이 접근할 수 있다.

 

클래스는 모든 접근제한자를 사용할 수 있지만,

구조체는 상속이 불가능하므로 public, internal, private 3가지만 사용할 수 있다. 

 

 

 

 

 

 

댓글