공부한 내용/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}입니다.");
        }
    }
}

 

*결과