ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 다시한번 개발자도전! 2일 (깃허브,데이터 형식)
    다시한번 개발자도전! 2026. 1. 5. 11:25

    오늘 첫 시작은 깃허브 까는 것부터!

    나는 일단 깔려있어서 까는 법은 패스 😛

     

    그나저나 잠이 안 와서 밤을 새우고 수업을 들으니까 너무 졸리다

    너무 졸려서 커피하나 낋여왔다. 오늘은 진짜 일찍 자기로 다짐,,

     

    이제 다시 집중 모드! 아자스‼️‼️


    📌상수 (Constant)

    • 상수 선언법: const 데이터타입 변수명 = 값;
    • 특징: * 한 번 선언하면 값을 변경할 수 없다. (Read-only)
      • 선언과 동시에 반드시 값을 할당(초기화)해야 한다.
      • 실수로 값을 변경해서 발생하는 버그를 원천 봉쇄가능.
     static void Main(string[] args)
     {
         //상수:변하지 않는 변수
         const double pi = 3.14159; //상수 선언 및 초기화
         int i = 0;
    
         i++;// 일반 변수이기 때문에 값이 변함
         pi++;// *error 상수로 선언하였기 떄문에 값이 변경될 수 없음
    
     }

     

    🔥실습예제🔥
    **실행 결과**
    최대플레이어: 4명
    시작 골드: 1000G
    버전: 1.0.0

    static void Main(string[] args)
    {
        const int maxPlayer = 4;
        const int gold = 1000;
        const string version = "1.0.0";
    
        Console.WriteLine($"최대플레이어: {maxPlayer}명");
        Console.WriteLine($"시작골드: {gold}G");
        Console.WriteLine($"버전: {version}");
    }

     


    🔢숫자 데이터 타입

    1️⃣ 정수 타입 (소수점 x)

    • 정수는 부호(음수 -)를 넣을 수 있는지 없는지에 따라 이름이 살짝 달라짐.
    • 앞에 'u'가 붙으면 Unsigned, 즉 '부호가 없다(0 이상)'는 뜻
    종류 타입 크기 표현 범위 용도 및 꿀팁
    부호 있음 sbyte 1바이트 -128 ~ 127 아주 작은 숫자용
    (음수 가능) short 2바이트 약 -3만 ~ 3만 적당히 작은 숫자
      int 4바이트 약 -21억 ~ 21억 제일 많이 사용
      long 8바이트 우주만큼 큰 수 21억 넘어가면 사용
    부호 없음 byte 1바이트 0 ~ 255 레벨, 나이, RGB 색상값
    (0 이상) ushort 2바이트 0 ~ 65,535 0 이상의 적당한 수
      uint 4바이트 0 ~ 약 42억 0 이상의 큰 수
      ulong 8바이트 0 ~ 겁나 큰 수 마이너스 없는 끝판왕

     

    2️⃣ 실수 타입 (소수점 o)

    타입 크기 정밀도 특징 및 주의사항
    float 4바이트 낮음 (7자리) 가볍지만 오차 있음. 숫자 뒤에 f 필수!(단정밀도)
    double 8바이트 중간 (15~16자리) 실수형의 기본 상자! 웬만하면 이거 써.(배정밀도)
    decimal 16바이트 매우 높음 (28~29자리) 돈 계산(금융) 할 때 무조건! 뒤에 m 필수!(고정밀도)

    💡 1바이트(1 Byte)란?

    더보기

    ⭐컴퓨터가 글자 하나를 저장하는 최소 단위

    • 8비트(Bit): 컴퓨터는 0이랑 1밖에 모름, 이 0이나 1이 들어가는 전구 하나가 '1비트'. 이 전구 8개를 묶어서 **'1바이트'**라고 부름. ($1 Byte = 8 Bits$)
    • 표현 범위: 전구가 8개니까 $2^8 = 256$, 즉 0부터 255까지의 숫자를 표현할 수 있다.  byte 범위가 0~255였던 이유
    • 글자 한 개: 영어 알파벳 한 글자(A, b 등)나 숫자 한 개를 저장할 때 딱 1바이트가 필요. (한글은 좀 더 복잡해서 2~3바이트를 씀)

    💡 비유하자면?

    • 비트(Bit): 불이 꺼졌다 켜졌다 하는 스위치 1개
    • 바이트(Byte): 스위치 8개가 모인 스위치 박스 1개

     int가 4바이트인 건 스위치 박스를 4개 붙여서 더 큰 숫자를 표현하는 것

    💡 실수형은 부호가 필요 없는 이유!

    더보기
    • 기본적으로 '부호'를 포함하는 구조
    • 실수는 컴퓨터 내부에서 저장될 때, 맨 앞의 1비트를 **"너 플러스(+)야, 마이너스(-)야?"**를 결정하는 '부호 비트'로 아예 고정해서 사용. 그래서 따로 나눌 필요가 없다.
    • 정수형은 부호 없는(uint) 상자를 쓰면 양수 범위를 2배로 늘릴 수 있지만 실수는 이미 표현할 수 있는 숫자의 범위가 넓기 때문에 굳이 부호를 표시할 필요없다.

     

    💡 한눈에 보는 요약

    구분 정수 타입 (int, long 등)/b> 실수 타입 (float, double 등)
    부호 구분 있음 (int vs uint) 없음 (그냥 하나로 다 됨)
    음수 사용 선택 가능 언제나 가능
    이유 양수 범위를 늘리려고! 이미 범위가 무한대급이라 굳이

     


    🏷️ 숫자 뒤에 붙는 '접미사'

    ✅ 상황별 꼬리표(접미사) 정리

    int (없음) 100 꼬리표 없으면 int로 인식함.
    long L 100L 큰 정수야 (대문자 L 추천)
    float f 3.14f 단정밀도 f
    double (없음) 3.14 아무것도 없으면 double
    decimal m 3.14m 고정밀도)이니까 m 붙여!"

     

    🔥실습예시 🔥
    캐릭터 능력치
    float 이동속도: 5.5
    double 공격속도 1.25
    decimal 아이템가격 12.99

     

     static void Main(string[] args)
     {
    
         float speed = 5.5f;
         double attackSpeed = 1.25;
         decimal price = 12.99m;
    	
         Console.WriteLine("캐릭터능력치");
         Console.WriteLine($"이동속도: {speed}");
         Console.WriteLine($"공격속도: {attackSpeed}");
         Console.WriteLine($"아이템 가격 {price}");
     }

    💬문자형 데이터 (char)

    • char 는 단일 문자를 저장하는 데이터 형식.
    • 2 바이트 크기Unicode 표준을 사용.
    • 반드시 **작은따옴표(' ')**로 감싸야 됨
    문자"0"과 숫자 0은 코딩에서 다르게 쓰임
     static void Main(string[] args)
     {
         char charVal = '9';
         int asciiVal = charVal;           
    
         Console.WriteLine(asciiVal); // 출력: 57,문자형 9가 유니코드로 57이기때문
     }

     

    💬문자열 (string)

    • 문장을 사용 (0개 이상의 문자)
    • 반드시 **큰따옴표(" ")**로 감싸야 됨
    • 문자형과 같이 안에 숫자가 있어도 큰따옴표가 붙으면 숫자가 아니라 그냥 '글자'임.

    🎓논리형 데이터(bool)

    • 오직 두 가지 값, 참(true) 또는 거짓(false)만을 저장
    • 논리 연산에 필수적으로 사용

    🔥실습예시🔥
    === 게임 상태 ===
    게임 실행 중:true
    일시정지:false
    열쇠 소지:false
    문 열림:false
    플레이어 생존:true

     static void Main(string[] args)
     {
            bool isGameRunning = true;
            bool isGamePaused = false;
            bool hasKey = false;
            bool isDoorOpen = false;
            bool isPlayerAlive = true;
            
            Console.WriteLine("=== 게임 상태 ===");
            Console.WriteLine($"게임 실행 중: {isGameRunning}");
            Console.WriteLine($"일시정지: {isGamePaused}");
            Console.WriteLine($"열쇠 소지: {hasKey}");
            Console.WriteLine($"문 열림: {isDoorOpen}");
            Console.WriteLine($"플레이어 생존: {isPlayerAlive}");
            
            //삼항연산자 사용 ex
            bool hasWeapon = true;
            bool hasArmor = false;
            bool hasPotion = true;
            
            Console.WriteLine("\n=== 인벤토리 ===");
            Console.WriteLine($"무기 보유: {(hasWeapon ? "있음" : "없음")}");
            Console.WriteLine($"방어구 보유: {(hasArmor ? "있음" : "없음")}");
            Console.WriteLine($"포션 보유: {(hasPotion ? "있음" : "없음")}");
    
     }

     

    💡삼항연산자

    더보기

    변수 = (조건식) ? 참일_때_값 : 거짓일_때_값;

    • ? (물음표): "이 조건이 맞니?"라고 물어보는 거야.
    • : (콜론): "맞으면 왼쪽(앞), 틀리면 오른쪽(뒤)!"이라는 뜻.
    • 보통 코드를 줄일때 많이 쓰지만 헷갈릴 수 있음!
    static void Main(string[] args)
    {
        int gold = 500;
        const int price = 1000;
    
        // 돈이 충분한지 삼항연산자로 체크!
        string message = (gold >= price) ? "아이템 구매 완료!" : "골드가 부족합니다";
    
        Console.WriteLine(message); // 출력: 골드가 부족합니다
    }

     


    ▪️닷넷 데이터 형식 (System Types) 

     

    • C# 별명 (int, bool...): 프로그래머들이 타이핑하기 편하고 읽기 좋게 만든 이름.
    • System 형식 (Int32, Boolean...): .NET이라는 큰 동네에서 모든 언어(C#, VB.NET, F# 등)가 공통으로 알아듣기 위해 정해놓은 본명.
    • 둘은 결국 같은 명령어
     static void Main(string[] args)
     {
     	// c# 
    	int number = 123;
    	bool flag = true;
    
    	//System 타입
    	// using System; 이 없으면 'System.'까지 붙여야한다.
    	System.Int32 number2 = 123; // int와 동일
    	System.Boolean flag2 = true; // bool과 동일
    
     }

    🎁래퍼 형식(Wrapper Class):

    • 기본형 (Primitive): 알맹이(값)만 있음. (예: int)
    • 래퍼 형식 (Wrapper): 알맹이를 **기능(메서드)**이 들어있는 포장지로 감쌈. (예: ToString)

    언제 래퍼 형식을 쓸까?

    • 문자열을 숫자로 바꿀 때: int.Parse()나 Int32.Parse() 처럼 기능을 호출할 때!
    • 숫자의 최댓값/최솟값이 궁금할 때: int.MaxValue 같은 걸 조회할 때!
    • 데이터를 객체(Object)로 취급해야 할 때: 박싱(Boxing)할 때
    static void Main(string[] args)
    {
        int gold = 1500;
        
        // 1. 단순 변환
        string goldText = gold.ToString(); 
        Console.WriteLine(goldText + "G"); // 출력: 1500G
    
        // 2. 실수의 소수점 제어 (꿀팁!)
        double pi = 3.141592;
        Console.WriteLine(pi.ToString("F2")); // 출력: 3.14 (소수점 둘째 자리까지!)
    
        // 3. 숫자에 콤마(,) 넣기
        int money = 1000000;
        Console.WriteLine(money.ToString("N0")); // 출력: 1,000,000 (보기 편해짐 ㅋ)
    }

     

    💡확장메서드란?

    더보기

    ‼️내가 헷갈려서 만든 확장메서드와 래퍼형식 차이점‼️

    📊 한눈에 비교하는 표

    구분 래퍼형식 확장 메서드
    소속 해당 타입 내부 (기본 탑재) 외부 클래스에서 정의
    등장 배경 모든 객체의 공통 기능 기존 타입을 더 편하게 쓰고 싶을 때 제작
    정의 위치 조상 클래스(Object) static class 안에서 this 키워드 사용
    비유 타고난 목소리 나중에 산 마이크

     


     

     

    🐝오늘의 꿀팁

     

    1️⃣ n0 키워드 (Number with 0 decimals)

    • 용도: 숫자에 **천 단위 구분 기호(콤마, ,)**를 찍고 싶을 때 사용.
    • 의미: n은 숫자(Number) 형식, 0은 소수점 아래 자릿수를 0개로 하겠다는 뜻.
    • 언제 쓸까?: 게임 골드, 아이템 가격, 경험치 등 큰 숫자를 보여줄 때 필수!
    int gold = 1000000;
    Console.WriteLine(gold.ToString("n0")); // 결과: 1,000,000

     

     

    2️⃣ f2 키워드 (Fixed-point with 2 decimals)

    • 용도: 소수점 자릿수를 딱 2개로 고정하고 싶을 때 사용.
    • 의미: f는 고정 소수점(Fixed-point) 형식, 2는 소수점 아래 둘째 자리까지 보여주겠다는 뜻
    • 언제 쓸까?: 캐릭터의 이동 속도, 공격 속도, 승률 등 정밀한 수치를 깔끔하게 보여줄 때.
    double speed = 5.56789;
    Console.WriteLine(speed.ToString("f2")); // 결과: 5.57 (셋째 자리에서 반올림됨!)

     

     

    앞으로도 아자스-‼️‼️

Designed by Tistory.