[C#] 3-1강 자료형과 변수(기본 제공 자료형(Built-in Type))

Dog발자·2024년 1월 29일

c#

목록 보기
4/8
post-thumbnail

저번 시간에는 c#의 기본을 알아보았습니다.

오늘은 변수와 자료형에 대해 알아보겠습니다.

class Player
{
   //내용을 채우는 것에 대한 이야기이다
   //개념: 플레이어는 골드를 가진다.
  (전역변수)
  맴버변수의 선언은 int(자료형) 이름(식별자)
  리터럴값 = 초기값을 넣을 줄수 있다
  리터럴 초기화 = 선언을 함과 동시에 값을 넣어준다
   
   bool lsFight; //변수 선언= 세부속성이면서 명사면서 값...
   int Gold = 10
   int EXP = 1000; 
   int Att  = 100;
   int Def = 400;
}

Exe파일을 실행하면 프로그램은 램에 올라가게(복사) 됩니다.


💡자료형(Date Type)변수(Date)을 담은 박스라고 생각하시면 편합니다.
변수는 프로그래밍에서 데이터를 저장하는데 사용되는 식별자입니다
자료형(Date Type)기본 제공 자료형(Built-in Type)사용자 정의 자료형(User-Defined Type)으로 나누어 지게 됩니다.

1. 기본 제공 자료형(Built-in Type)

  • 기본 제공 자료형은 구조체로 되어 있어서 형식은 값형식(스택에 할당) = (깊은 복사)입니다.
  • 하지만 특별하게 참조 형식이 있는데 그게 string입니다. string은 참조 형식이지만, 불변성(immutable)을 가지고 있습니다. 즉, 한 번 생성된 string 객체는 변경할 수 없습니다.
    string에 대한 모든 변경 작업은 새로운 string 객체를 생성하게 됩니다.
    이러한 특성 때문에 string은 값 형식처럼 동작하는 것처럼 보일 수 있습니다.

a. 값형(Value Type) : 변수가 값을 담는 데이터 형식
b. 참조형(Reference Type) : 변수가 값 대신 값이 있는 곳 위치(참조)를 담는 데이터 형식

2. 사용자 정의 자료형(User-Defined Type)은 구조체(struct)와 열거체(enum)와 클래스 (Class)으로 나누어져 있습니다.

  • 내용이 많아서 다음 파트에 설명드리겠습니다
  • 클래스는 중요하니 따로 파트에서 설명드리겠습니다.


자료형(Date Type)

변수는 정수, 실수, 부울형, 문자, 문자열이 있는데. 각각 상황에 맞는 자료형이 필요합니다.

1. 기본 제공 자료형(Built-in Type)

1. 값형(Value Type)

값을 담은 데이터 형식 입니다.
값형은 정수,실수, 문자, 부울형으로 나눕니다.

A. 정수형 (Integer Types)

정수를 저장하는 데 사용됩니다.

  • sbyte : signed 8비트 정수.
    _범위 : -128~127_

  • byte : unsigned 8비트 정수.
    범위 : 0~255

  • short : signed 16비트 정수
    범위 : -32,768~32,767

  • ushort : unsigned 16비트 정수
    범위 : 0~65,535

  • int: signed 32비트 정수.
    범위: -2,147,483,648~2,147,483,647

  • uint : unsigned 32비트 정수.
    **범위: 0 ~ 4,294,967,295
    **

  • long: signed 64비트 정수.
    범위 :-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

  • ulong: unsigned 64비트 정수.
    범위: 0 ~ 18,446,744,073,709,551,615

signed와 unsigned
C언어에서는 signed와 unsigned가 있지만 C#에서는 따로 자료형이 있습니다. 기본적으로 signed가 가지고 있고. unsigned을 붙이고 싶다면 앞에 u를 붙여야 됩니다.

간단하게 생각하시면 됩니다.

singed : 양수,음수 둘다 저장 가능
unsigned : 양수만 가능

💡signed와 unsigned 중에 뭐가 더 처리속도가 빠르나요?
unsigned이 가장빠릅니다. unsigned은 양수만 처리하기 때문에 signed보다 처리속도가 빠릅니다

B. 부동 소수점(floating-point)

소수점이 있는 숫자를 저장하는 데 사용됩니다.

  • float : 4byte(32bit) 실수형
    약 7자리의 정밀도를 가집니다.

  • double: 8byte(64bit) 실수형
    약 15-16자리의 정밀도를 가집니다.

  • decimal: 16byte(128bit) 실수형
    약 28~29자리의 정밀도를 가집니다.

C. 부울형 (Boolean Type)

true 또는 false 값을 저장하는 데 사용됩니다.

  • bool: true 또는 false 값을 가집니다.

D. 문자형 (Character Type)

단일 문자를 저장하는 데 사용됩니다.

  • char : 16비트 유니코드 문자를 저장합니다.

2. 참조형(Reference Type)

문자열형 (String Type)

문자의 시퀀스를 저장하는 데 사용됩니다.

  • string : 문자의 시퀀스를 저장합니다.

참조형은 배열이고, 배열은 주소(포인터)에 저장이 됩니다.(C언어 편에서)

문자열은 문자로 구성된 배열입니다.

💡문자열이 왜 배열인가?

"hello"로 메모리와 연관을 지어서 예시로 해보겠습니다.**

class Hello
{
    public static void main(string args[])
    {
      string A = "hello";
    }
}

"hello"가 그 자체가 메모리에 저장되는 걸로 보일 수 있는데 그렇지 않습니다. 문자열은 문자로 구성된 배열입니다.

  1. String A = "hello";를 실행하면, 메모리에 "hello"라는 문자열이 저장됩니다. 이때 각 문자 ‘h’, ‘e’, ‘l’, ‘l’, 'o’는 연속적인 메모리 위치에 저장됩니다. 이렇게 저장된 문자열의 시작 주소가 변수 A에 저장됩니다.
  1. 변수 A는 이제 "hello"라는 문자열을 가리키게 됩니다. 즉, A는 "hello"라는 문자열이 저장된 메모리의 시작 주소를 가지고 있습니다.
  1. 따라서 A를 참조하면, A가 가리키는 메모리 위치에 저장된 "hello"라는 문자열이 반환됩니다.

0개의 댓글