티스토리 뷰

자료형 = 자료를 담을 수 있는 일정한 형식

 

종류

  • 정수형 타입
데이터량 부호 O 부호X
8bit = 2의 8제곱 sbyte  byte
16bit = 2의 16제곱 short  ushort
32bit = 2의 32제곱 int uint
64bit = 2의 64제곱 long uling
static void Main(string[] args){
  byte number = 200;
  Console.WriteLine(number); // 출력 값 200
}
static void Main(string[] args){
  byte number = 300; // 오류 발생
  Console.WriteLine(number);
}

 Q. 왜 굳이 정수자료형 안에서 구분을 할까?? 복잡하게스리..

 A. 구분하는 이유는 데이터 저장공간의 효율성을 위해 (파리 한마리 잡으려고 화염방사기를 쓸 수는 없잖아?)

      

  • 실수형
데이터량 이름 표현방법 특징
4byte = 4*8bit float 1f, 2f ... 빠른 연산처리 
8byte = 8*8bit double 1d, 2d ... 보다 정밀한 연산처리
16byte = 16*8bit decimal 1m, 2m ... 겁나 정확 (오차가 허용되지 않는 업무시 사용)

예제) 1/3을 각 실수형으로 계산시 결과 값

static void Main(string[] args){
  float number = 1f / 3f; 
  Console.WriteLine("{0:F20}", number);
}
// 출력 값 = 0.33333334326744079590
static void Main(string[] args){
  double number = 1d / 3d; 
  Console.WriteLine("{0:F20}", number);
}
// 출력 값 = 0.33333333333333331483
static void Main(string[] args){
  decimal number = 1m / 3m; 
  Console.WriteLine("{0:F20}", number);
}

// 출력 값 = 0.33333333333333333333

 

※ 참고 = 실수형 계산시 정확한 숫자형을 맞춰주지 않으면 결과값이 달라짐

decimal number_int = 1 / 3; 	//	0.00000000000000000000
decimal number_float = 1f / 3f;		오류발생!
decimal number_doble = 1d / 3d;		오류발생!
decimal number_decimal = 1m / 3m; //	0.33333333333333333333

double number_int = 1f / 3f;	//	0.00000000000000000000
double number_float = 1f / 3f;	//	0.33333334326744079590
double number_doble = 1d / 3d;	//	0.33333333333333331483

이러한 결과가 나타나는 이유는 형변환!!

 

형변환이란, 자료형이 변하는 것. 종류는 아래와 같이 두 가지가 존재한다.

 

암시적 형변환

  • 의미 = 자료형 변환을 위해 별도의 형변환 작업이 필요 없는 것
  • 언제 = 형변환을 위해 재계산이 필요 없는 경우

 

명시적 형변환

  • 의미 = 자료형 변환을 위해 별도의 형변환 작업이 필요한 것
  • 언제 = 형변환을 위해 재계산이 필요한 경우
  • 예시
    •   큰 용량의 데이터형식이 작은 용량의 데이형식으로 변환 될 때
    •   서로 다른 범주의 데이터 형식인 경우 

위의 예시를 바꿔보자 (오류발생 = 명시적 형변환이 필요하다는 것!)

decimal number_int = 1 / 3;//			0.00000000000000000000 = 암시적 형변환
decimal number_float = (decimal)(1f / 3f);//	0.33333330000000000000 = 명시적 형변환
decimal number_doble = (decimal)(1d / 3d);//	0.33333330000000000000 = 명시적 형변환
decimal number_decimal = 1m / 3m;//		0.33333333333333333333 = 암시적 형변환

double number_int = 1f / 3f;//		0.00000000000000000000 = 암시적 형변환
double number_float = 1f / 3f;//	0.33333334326744079590 = 암시적 형변환
double number_doble = 1d / 3d;//	0.33333333333333331483 = 암시적 형변환

 

  • 문자형 = 사칙연산 X
이름 설명 예시 특징
char 유코드 16bit 문자 사진참조 사칙연산 불가능/ '  ' 사용
string 유니코드 문자열 '+'로 연결 가능/ "  " 사용

유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준

이스케이프 시퀀스

  - 의미 = 단순 문자가 아닌 "기능"을 가진 문자열

  - 자주 사용되는 이스케이프 시퀀스

     1. "\t" = Tab 기능

     2. "\n" = Enter 기능 (새로운 행) 

     3. "\b" = 백스페이스 기능 (한글의 경우 잘 작동 안함)

string sequnces = $"짱짱맨은\t 밥을먹으러\n집에\b갔다 abc\bde";
Console.WriteLine(sequnces);

//--출력값--
짱짱맨은         밥을먹으러
집 갔다 abde

  - 순수하게''를 문자열로 출력하고 싶은 경우

     1. ""

     2. $"" , @""

string text1 = @"\t\t야호 야호\\";
string text2 = $"\t\t야호 야호\\";

//--출력값--
\t\t야호 야호\\
                야호 야호\

 

  • Boolean 자료형 = true, false

     - 언제 사용? = 주로 if, while문 과 같은 조건문과 같이 사용 

 

  • 자료형을 반드시 선언해야 할까?

     - 그건 언어마다 차이가 있음

     - 동적 타입의 언어의 경우 (ex Python) 자료형을 선언하지 않아도 된다

     - 자료형을 굳이 선언하는 이유는 메모리의 효율성을 늘리기 위해서다.

오늘의 깨달음

사람이 귀찮을 수록 컴퓨터가 편함 (메모리 효율성 높아짐)
사람이 편할 수록 컴퓨터가 힘듬 (메모리 효율성 나빠짐)

참고)

솔루션 = 여러 프로젝트가 담긴 컨테이너

프로젝트 = 기본적인 작업 단위

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
250x250