공부한 내용/C#
[C#] 데이터 자료형 및 문자열 서식
Silver Shoes
2024. 2. 29. 15:54
[C#] 데이터 자료형
1. 기본 데이터 형식 vs. 복합 데이터 형식
*기본 데이터 형식: 말 그대로 '기본' 형식. 정수(int), 문자열(string) 등...
*복합 데이터 형식: 기본 데이터가 모여서 만들어진 데이터 형식
2. 값 형식 vs. 참조 형식
*값 형식: 변수가 값을 저장할 때 말 그대로 '값' 그 자체를 저장 (파이썬의 mutable과 비슷함: 정수, 실수, 문자 등)
*참조 형식: 변수가 값을 저장할 때 저장할 값을 참조함 (값의 '주소'를 저장함) (파이썬의 immutable과 비슷함: 리스트, 딕셔너리 등)
3. 데이터 세부 형식
1) 데이터 세부 형식
데이터 형식 | 구분 | 분류 | 크기(Byte) | 값의 범위 |
byte | 부호 없는 정수 | 값(struct) | 1 (8bit) | 0 ~ 255 |
sbyte | 정수 | 값(struct) | 1 (8bit) | -128 ~ 127 |
short | 정수 | 값(struct) | 2 (16bit) | -32,768 ~ 32,767 |
ushort | 부호 없는 정수 | 값(struct) | 2 (16bit) | 0 ~ 65,535 |
int | 정수 | 값(struct) | 4 (32bit) | -2,147,483,648 ~ 2,147,483,647 |
uint | 부호 없는 정수 | 값(struct) | 4 (32bit) | 0 ~ 4,294,967,295 |
long | 정수 | 값(struct) | 8 (64bit) | -922,337,203,685,477,508 ~ 922,337,203,685,477,507 |
ulong | 부호 없는 정수 | 값(struct) | 8 (64bit) | 0 ~ 18,446,744,073,709,551,615 |
float | 실수 | 값(struct) | 4 (32bit) | -3.402823e38 ~ 3.402823e38 |
double | 실수 | 값(struct) | 8 (64bit) | -1.79769313486232e308 ~ 1.79769313486232e308 |
decimal | 실수 | 값(struct) | 16 (128bit) | -79,228,162,514,264,337,593,543,950,335 ~ 79,228,162,514,264,337,593,543,950,335 |
bool | 논리 | 값(struct) | 1 (8bit) | true, false |
char | 문자 | 값(struct) | 2 (16bit) | |
string | 문자열 | 참조(class) | ||
object | 객체 | 참조(class) |
*데이터 형식의 최소값, 최대값 확인하는 방법: .MinValue, .MaxValue
(ex) int.MinValue
2) 데이터 형식 확인
*형식 확인: .GetType()
(ex)
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
decimal a = 1.23456789m;
string b = "안녕하세요";
Console.WriteLine(a.GetType().Name);
Console.WriteLine(b.GetType().Name);
}
}
}
*결과
※ 데이터 형식을 확인하는 또다른 함수 typeof(), 데이터 크기를 확인하는 함수 sizeof()는 입력값을 데이터 형 그 자체만 받을 수 있음
(ex) typeof(int) (O) / sizeof("안녕하세요") (X)
3) 숫자 값 입력 시 주의 사항
※ 숫자 값을 입력할 때는 맨 뒤에 데이터 형식을 꼭 적어야 함
*float: f
*double: d
*decimal: m
(ex)
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
double a = 1.23456789d;
float b = 1.23456789f;
decimal c = 1.23456789m;
int d = (int)a;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
}
}
}
*결과
4. 문자열 서식
① string.Format() (파이썬의 %d, %s 등과 같음)
② $ 사용 (파이썬의 f" "와 같음)
(ex)
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
decimal a = 1.23456789m;
string b = "안녕하세요";
Console.WriteLine($"a의 값은 {a}이고, b의 값은 {b}입니다.");
}
}
}
*결과