일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- >.NET
- 리액트
- 유니티
- 중단
- 저장
- 암시적형변환
- GetKey
- C#
- Explicit Conversion
- JSON
- File
- 클래스
- implicit Conversion
- 리액트네이티브
- OnMouseClick
- stopcoroutine
- 구독
- 마우스
- Subscribe
- useEffect
- Fetch
- Unity
- 팁
- 키보드
- 훅
- 코루틴
- 오버플로우
- 명시적형변환
- oveflow
- 불러오기
- Today
- Total
Log to grow
[C# 기초] 기본 자료형 (정수형, 실수형, 문자형, 논리형 등) 본문
1. 기본 자료형
이 세상에 존재하는 모든 데이터는 '형식' 이라는 것이 필요하다. 예를 들어, 우리의 이름같은 경우는 문자들의 집합으로 이루어져 있으므로 '문자열' 형식이며, 나이는 정수이므로 '정수형', 키는 실수이므로 '실수형'의 형식이다. C#에서도 모든 데이터를 이러한 형식에 따라 구분하여 저장하고 사용하는데, 이를 구분하기 위해 필요한 것이 바로 자료형이다.
2. 기본 자료형의 종류
자료형의 종류는 아래와 같이 5가지로 구분할 수 있다.
종류 | 예시 |
정수형 | int, byte, short 등 |
실수형 | double, float 등 |
문자형 | char, string |
논리형 | bool |
기타 | object |
위 표에 표시한 예시 이외에도 C#에 존재하는 다른 자료형이 궁금하다면 아래 url에서 찾아보면 된다. 아래 url은 정수형 타입에 대한 페이지이며 실수형, 논리형 등 다른 종류 타입은 같은 카테고리의 다른 페이지에서 찾아볼 수 있다.
* 정수 숫자 형식 - C# 참조
이러한 다양한 자료형들을 상황에 맞게 선택하여 사용하게 된다. 위에서 예시로 들었던 이름, 나이, 키는 아래와 같이 해당하는 자료형을 선택하여 변수로 구현할 수 있다. 변수가 무엇인지 모르겠다면 아래 url에서 확인할 수 있다.
string name = "john";
int age = 17;
float height = 165.0f;
* 변수
3. 자료형을 구분해야 하는 이유
위 표를 보면 같은 정수형임에도 불구하고 여러 종류의 자료형이 존재하는 것을 알 수 있다. 예시에는 3종류만 표시해 놓았지만 위 url에서 총 8개의 정수형 자료형이 있음을 확인할 수 있다. 같은 정수형 타입인데도 여러 타입으로 구분해야 하는 이유가 있을까?
이는 효율적인 메모리 관리를 위해서이다. 예를 들어, short 타입의 경우 16비트의 정수 즉, -32,768~32,767 범위의 정수를 저장할 수 있다. 반면, long 타입의 경우 64비트의 정수 즉, –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 범위의 정수를 저장할 수 있다.
만약 15,000 이라는 정수를 저장하려고 한다면 short 타입으로도 충분하므로 long 타입을 사용할 경우 그만큼의 메모리를 낭비하게 되는 것이다. 하지만 short 타입 변수에 40,000의 값을 저장한다면 overflow가 발생하므로 이 경우에는 더 큰 타입인 int 혹은 long 을 사용해야하는 것이다.
long a = 15000; // 메모리 낭비
short b = 40000; // 오버플로우
결과적으로 같은 정수형일지라도 상황에 맞는 자료형을 선택해야 한다. 만약 변수에 담긴 값이 큰 값으로 변할 가능성이 있고 메모리가 충분할 경우 int, long 등 큰 자료형을 선택하는 것이 좋고, 변수에 담긴 값이 큰 값으로 변할 가능성이 없고 메모리 공간이 모자랄 경우 short, byte 등 작은 자료형을 선택하는 것이 메모리 측면에서 좋다.
'PL > C#' 카테고리의 다른 글
[C# 기초] 배열 (선언, 초기화, 인덱스) (1) | 2020.01.24 |
---|---|
[C# 기초] 형변환 (암시적, 명시적 형변환, overflow) (0) | 2020.01.06 |
[C# 기초] 변수 (변수 선언과 사용법) (0) | 2020.01.03 |
[C# 기초] 토큰 (예약어, 식별자, 리터럴, 연산자, 구분자) (1) | 2020.01.02 |