ch3 자료형기초

C#의 경우에는 자료형이 엄격한 언어에 속한다(C++, C ..etc)

데이터 형식 설명 크기(Byte) C/C++ 담을 수 있는 값의 범위
byte 부호 없는 정수 1 (8bit) uisigned char 0 ~ 255
sbyte signed byte 1 (8bit) char -128 ~ 127
short 정수 2 (16bit) short int -32,768 ~ 32,767
ushort unsigned short 2 (16bit) unsigned short int 0 ~ 65535
int 정수 4 (32bit) long(int_32t) -2,147,483,648 ~ 2,147,483,647
uint unsigned int 4 (32bit) unsigned long 0 ~ 4294967295
long 정수 8 (64bit) long long -922337203685477508 ~ 922337203685477507
ulong unsigned long 8 (64bit) unsigned long long 0 ~ 18446744073709551615
char 유니코드 문자 2 (16bit) 존재하지 않음 일본어, 한자, 아랍어…etc
float 유효 7 자리 4 (32bit) float -3.402823e38 ~ 3.402823e38
double 유효 15-16 자리 8 (64bit) double -1.79769313486232e308 ~
bool 논리형식 1 (8bit) bool true, false

(변수 자료형에 따른 비트를 외워야 한다..놀랍도다→ 내가 알기로는 시험때 나옴)

C#의 경우, 1) 기본데이터 형식과 복합 데이터 형식으로 나뉘어져 있다.

→ class 형이라고 생각하면 된다!

C#의 경우, 2*) 값 형식과 참조 형식*으로 나뉘어져 있다. (C++은 포인터가 추가)

값 형식

image.png

변수가 값을 담는 데이터 형식, **스택(Stack)**에 할당되고 변수 생성 코드 범위를 벗어나면 해제

i.e. 코드블럭→{ } 내에서 이용되고 사라지는 형식을 의미한다 → 기화성을 지닌 변수다!

(그림의 회색 박스 부분이 스택임)

참조 형식 (연결 다리라고 생각하자)

image.png

변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식으로, **힙(Heap)**에 할당

이후에는 가비지 컬렉터에 의해 해제된다.