Development/C#
[제프리 리처의 CLR via C#] 프로그래밍 언어의 기본 타입
오늘도 진이
2021. 4. 15. 15:18
목차
2부. 타입 설계
5장. 기본, 참조, 값 타입
프로그래밍 언어의 기본 타입
- 기본 타입(Primitive Type) - 컴파일러가 직접 지원하는 데이터 타입들
- 기본 타입들은 프레임워크 클래스 라이브러리상에 정의된 타입들과 직접 연결(예: C#의 경우 int 타입은 System.Int32타입과 바로 연결)
- 예외없이 모두 동일한 IL 코드 생성
- int a = 0; // 가장 쓰기 쉬운 문법
- System.Int32 a = 0; // 비교적 쉬운 문법
- int a = new int(); // 불편한 문법
- System.Int32 a = new System.Int32(); // 명시적이지만 너무 돌아가는 문법
- C#은 암묵적 타입 변환을 "안전하다'고 판단하는 타입 변환 연산에 대해서만 허용하며, 이 동작은 Int32에서 Int64로의 변환과 같이 타입 변환 과정에서 데이터 손실이 없다고 판단할 때에만 적용된다.
- 하지만 잠재적으로 데이터 손실 가능성이 우려되는 타입 변환 연산에 대해서는 명시적인 타입 변환만을 허용한다.
- 기본 타입은 변수가 아닌 리터럴 상수로 기재할 수도 있다.
- 기본 타입 연산의 오버플로우 여부 검사
- 해시 값이나 체크섬 값을 계산하는 등의 특이한 경우를 제외하고 대부분의 경우 이러한 오브플로우에 대한 검사는 필수적이다.
- .NET의 경우, 오버플로우 또한 명백한 오류로 취급하며 발견된 경우 이 사실을 알리고 프로그램의 실행을 중단시킨다.
- CLR은 IL 명령어를 통해서 컴파일러가 이에 대한 동작을 직접 선택할 수 있도록 하고 있다.
- 전역적으로 오버플로우 검사를 켜거나 끄는 것 말고도, 개발자가 필요에 의하여 지역적으로 특정 코드 영역에서만 오버플로우 검사를 켜거나 끄는 방법도 사용할 수 있다.
- C#은 checked와 unchecked 연산자를 사용하여 이를 유연하게 지원하고 있다.
Uploaded by Notion2Tistory v1.1.0