기본 데이터 타입
C# 언어가 제공하는 기본 데이터 타입에는 모두 15가지가 있다. 이들은 크게 숫자 타입, 논리 타입, 문자열 타입, 오브젝트 타입으로 나뉜다. 이 중에서 문자열 타입과 오브젝트 타입은 참조 타입에 해당하며, 나머지는 모두 값 타입이다.
숫자 데이터 타입
15가지 기본 데이터 타입 중 12가지를 숫자 데이터(Numeric Type) 타입으로 제공한다. 이 12가지 타입은 다시 정수 계열, 부동 소수 계열, 소수 계열로 나뉜다.
정수 계열 타입
정수 데이터(Integer Type)를 담기 위해 사용하며, 9가지 정수 타입은 각각 크기와 담을 수 있는 데이터의 범위가 다른데, 프로그래머가 코드에 사용될 데이터가 어느 정도의 범위에 있는지 판단한 뒤 적절한 데이터 타입을 선택함으로써 메모리를 효율적으로 사용할 수 있게 하기 위함이다.
| 데이터 타입 | 설명 | 크기(바이트) | 담을 수 있는 값의 범위 |
|---|---|---|---|
| byte | 부호 없는 정수 | 1(8비트) | 0 - 255 |
| sbyte | signed byte, 정수 | 1(8비트) | -128 - 127 |
| short | 정수 | 2(16비트) | -32,768 - 32,767 |
| ushort | unsigned byte, 부호 없는 정수 | 2(16비트) | 0 - 65,535 |
| int | 정수 | 4(32비트) | -2,147,483,648 - 2,147,483,647 |
| uint | unsigned int, 부호 없는 정수 | 4(32비트) | 0 - 4,294,967,295 |
| long | 정수 | 8(64비트) | -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807 |
| ulong | unsigned long, 부호 없는 정수 | 8(64비트) | 0 - 18,446,744,073,709,551,615 |
| char | 유니코드 문자 | 2(16비트) |
부동 소수점 타입
소수점이 고정되어 있지 않고 움직이면서 수를 표현하는 부동 소수점 타입은 정수 뿐 아니라 유리수를 포함하는 실수 영역의 데이터를 다룬다.
| 데이터 타입 | 설명 | 크기(바이트) | 범위 |
|---|---|---|---|
| float | 단일 정밀도 부동 소수점 타입(7개의 자릿수만 다룰 수 있다.) | 4(32비트) | -3.402823e38 - 3.402823e38 |
| double | 복수 정밀도 부동 소수점 타입(15 - 16개의 자릿수를 다룰 수 있다.) | 8(64비트) | -1.79769313486232e308 - 1.79769313486232e308 |
float 이름은 Floating Point 명칭에서 온 것이며, double 이름은 Double Precision Floating Point Format 명칭을 줄여서 만든 이름이다. C# 언어의 float, double 타입은 IEEE754 표준 알고리즘에 기반한 데이터 타입이다.
decimal 타입
실수를 다루는 데이터 타입으로 정밀도가 높으며, 부동 소수점과는 다른 방식으로 소수를 다룬다.
| 데이터 타입 | 설명 | 크기(바이트) | 범위 |
|---|---|---|---|
| decimal | 29자리 데이터를 표현할 수 있는 소수 타입 | 16(128비트) | ±1.0 X 10e-28 - ±7.9 X 10e28 |
논리 타입
논리 타입이 다루는 데이터는 참(True), 그리고 거짓(False)으로 두 가지이다. C 언어에서는 논리 타입이 없어 프로그래머는 0을 거짓 0이 아닌 값을 참으로 사용한다.
| 데이터 타입 | 설명 | 크기(바이트) | 범위 |
|---|---|---|---|
| bool | 논리 타입 | 1(8비트) | true, false |
object 타입
C# 언어에서는 모든 데이터를 다룰 수 있도록 하기 위해 모든 데이터 형식이 자동으로 object 타입으로부터 상속받게 한다.