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++은 포인터가 추가)

변수가 값을 담는 데이터 형식, **스택(Stack)**에 할당되고 변수 생성 코드 범위를 벗어나면 해제
i.e. 코드블럭→{ } 내에서 이용되고 사라지는 형식을 의미한다 → 기화성을 지닌 변수다!
(그림의 회색 박스 부분이 스택임)

변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식으로, **힙(Heap)**에 할당
이후에는 가비지 컬렉터에 의해 해제된다.