자료형

강성현
∙∙조회 5
자료형

 

자료형이란?

값을 담기 전에 어떤 종류의 값을 담을 것인지 정해야 하는데 이때 정하는 값의 종류를 자료형(data type) 이라고 합니다.

★ C#의 자료형은 크게 값 형식(value type), 참조 형식(reference type) 으로 나뉩니다.

갈래변수가 담고 있는 것해당하는 기본 형식
값 형식값 자체정수형,실수형과 char, bool
참조 형식값이 있는 곳string

1. 정수형

소수점이 없는 수를 담는 형식입니다. 레벨, 골드, 남은 총알 수 처럼 낱개로 세는 값이 여기에 해당됩니다.

csharp
ex)
int gold = 15000;
long totalDamage = 900000000L;

자료형크기범위
byte1바이트0 ~ 255
sbyte1바이트-128 ~ 127
short2바이트-32,768 ~ 32,767
ushort2바이트0 ~ 65,535
int4바이트약 -21억 ~ 21억
uint4바이트0 ~ 약 42억
long8바이트약 -922경 ~ 922경
ulong8바이트0 ~ 약 1,844경

※ uint 는 'unsigned int'로 부호가 없는 int 자료형을 이야기합니다.


2. 실수형

소수점이 있는 수를 담는 형식입니다. 이동속도, 남은 시간 등 연속적인 값에 사용합니다.

csharp
ex)
float moveSpeed = 5.5f;
double distance = 12.75;

| 자료형 | 크기 | 대략의 유효 자릿수 | 주 용도 | | :--- | :--- | :--- | | float | 4바이트 | 6 ~ 9자리 | 게임 엔진의 좌표·속도·시간 | | double | 8바이트 | 15 ~ 17자리 | 일반적인 소수 계산 | | decimal | 16바이트 | 28 ~ 29자리 | 금액처럼 오차가 허용되지 않는 값 |

float 변수에 소수를 넣어 사용할 때에는 값 뒤에 f 를 붙여야 합니다. ex) float a = 3.14f;


3. 문자형과 문자열

char 는 문자 하나를 담는 형식이고 string 은 글자의 나열을 담는 형식입니다

csharp
ex)
char grade = 'A';
char initial = '김';
string playerName = "Jade";
string message = "던전에 입장했습니다.";
string empty = ""; // 글자가 없는 문자열

구분charstring
담는 것문자 하나문자의 나열
표기작은따옴표 'A'큰따옴표 "A"
갈래값 형식참조 형식
길이항상 10개 이상

3-1) 문자열 보간

문장 안에 변수의 값을 끼워 넣어야 할때 사용합니다.

csharp
ex)
string playerName = "Jade";
int level = 12;

string message = $"{playerName}님의 레벨은 {level}입니다."
// message에 담기는 값 : Jade님의 레벨은 12입니다.


4. 논리형

bool 은 참과 거짓 중 하나 를 담는 형식입니다.

csharp
ex)
bool isAlive = true;
bool hasKey = false;


5. 형 변환

서로 다른 자료형 사이에 값을 옮겨야 하는 상황에 사용합니다. 형변환에는 암시적 변환, 명시적 변환 그리고 변환 전용 도구가 있습니다.

  • 암시적 변환은 크기가 작은 자료형에서 큰 자료형으로 바꿀 때 C#이 알아서 해주는 것을 말하고,
  • 명시적 변환은 크기가 큰 자료형에서 작은 자료형으로 바꿀 때 넘쳐도 좋으니 옮기겠다는 의사를 코드로 밝히는 것을 말합니다.
  • 숫자와 글자처럼 갈래 자체가 다른 경우에는 변환 전용 도구를 사용합니다.

5-1) float > int

csharp
float floatNumber = 25.877f;

// 정수형(int)로 바꿀때
Console.WriteLine((int)floatNumber); // 출력 : 25

// 반올림해서 정수형(int)로 바꿀때
Console.WriteLine(Convert.ToInt32(floatNumber)); // 출력 : 26

// 반올림 자릿수를 지정하고 싶을때
Console.WriteLine(Math.Round(floatNumber, 2)); // 출력 : 25.88

 

5-2) char > int

csharp
char symbol = 'C';
int newSymbol = symbol + 32;

Console.WriteLine(newSymbol); // 출력 : 99
Console.WriteLine((char)newSymbol); // 출력 : c 

char 자료형에서 int 자료형으로 변환하는 경우에 숫자가 출력되는 이유 : 해당 문자가 뜻하는 고유한 아스키코드(ASCII)로 반환하기 때문입니다.

5-3) string > int

csharp
string text1 = "10";
string text2 = "20";

Console.WriteLine(text1 + text2); // 출력 : 1020

int a = int.Parse(text1);
int b = int.Parse(text2);

Console.WriteLine(a + b); // 출력 : 30 

Parse( ) 는 string을 int로 변환시켜주는 함수이지만,실제 게임에 적용하기엔 위험한 코드이다. 이 내용은 추후에 배울 예정이다.

 

 


bit와 byte

bit란, 컴퓨터가 다룰 수 있는 가장 작은 정보의 단위 -> 0 혹은 1 하나

1byte = 8 bit

※ int 자료형의 크기는 4byte 인데 컴퓨터에게 4byte씩 끊어서 읽게 하겠다 라는 의미이다.

1byte로 표현할 수 있는 것들

  • 숫자 : 0부터 255까지의 정수
  • 문자 : 영문 알파벳, 숫자, 기본 특수문자
  • 색상 : RGB에서 각 색상 강도 (0~255)

Word

CPU가 한번에 처리할 수 있는 데이터의 단위 32bit, 64bit 시스템의 차이를 만들어내는 핵심 개념


참고문헌

Microsoft MSDN