지지나

C# 데이터 타입과 변수를 배워봐요 - 2 본문

기획자의 프로그래밍 걸음마/C#

C# 데이터 타입과 변수를 배워봐요 - 2

Gygyna 2020. 5. 18. 22:56

안녕하세요~ 지난번에 C# 데이터 타입과 변수를 아주 살짝 발만 담갔을 뿐인데 어느 것 하나 쉽게 이해되는 것이 없네요. 

 

하지만 제 목표는 "개발자가 되겠어!" 라기 보다는..컴퓨터라고는 인터넷검색만 할 줄 아는 흔한 직장인이 "프로그래밍이 대체 무엇?" 인지 알기 위함이니까요!!!

 

값 형식중에서 기본 데이터 타입을 배웠는데, 정수타입과 실수타입의 숫자형 그리고 문자형에 대해 보겠습니다.

 

기본데이터 타입인 Bool, Byte, Double, Int 등등의 자세한 정의는 C# 프로그래밍 기본서에 다 나와있으므로 강의와 함께 이런게 있구나~ 라고만 알고 갔어요. 

 

[숫자형 정수타입]

int a,b 변수에 30과 10의 값을 준 다음에 long 타입으로 덧셈을 해 보았어요. 뒤에 나오겠지만 long 이 더 큰 것이므로 오류 없이 실행할 수 있었습니다. 

 

정수타입 숫자형 데이터를 좀 더 알아볼까요? 

빨간 상자의 출력값을 먼저 말씀드리자면 355 와 3 입니다. 

int c = short a1 + byte b1 이라고 했는데, 세 가지 모두 데이터 타입이 다르지만 저장형태는 같습니다. 

Int 4바이트 

short 2바이트

byte 1바이트 

이므로 모두 int 보다 저장용량이 작기 때문에 묵시적으로 오류 없이 데이터 형 변환이 가능해 200+155=355 로 c결과가 나온 것이에요! 

 

[숫자형 실수타입]

float 는 소수점 7번째 자리까지, 숫자 뒤에 f를 붙입니다. 

double 은 소수점 15번째 자리까지 

decimal 은 소수점 28번째 자리까지, 숫자 뒤에 m을 붙입니다. 제일 정확하고 정밀하게 값을 표기할 수 있어요. 

 

오른쪽에 출력값을 보면 오버플로우가 나서 짤린 것을 볼 수 있어요. 

 

[문자형]

char 타입은 2바이트이며 문자 한 글자만 기록하기 때문에 아래와 같이 '커피' 라고 입력하면 오류가 나는 것을 볼 수 있어요. 이럴땐 맨 처음에 Hello World 출력했듯 string 타입을 사용하면 됩니다. 

문자형을 더 볼까요? 유니코드 문자를 저장하며 2바이트 크기를 가지는데, 추가로 여러 제어문자를 더 보았어요. 

 

아래는 참고입니다!

역슬래시는 \로 대체가능합니다. 

\t 는 TAB키에요, 그래서 아래와 같이 출력하면 커피가 연결이 안되고 탭 키로 떨어져 있는걸 확인 할 수 있습니다. 

그 아래 \b는 백스페이스 표시인데 출력해도 딱히 눈에 보이지는 않네요ㅠ

조금 더 볼까요? \n 은 개행문자로 줄바꿈 문자에요. 커와 피 사이에 개행문자를 넣었고, Console.WriteLine(ch3)으로 피 뒤에 줄바꿈 명령을 내린 뒤, Console.Write(ch5)를 함으로써 한 줄 뛴 것을 확인 할 수 있습니다. 

그리고 \r은 리턴문자인데요, Console.Write(ch1)으로 '커' 글자를 입력하고 Consoel.Write(ch6)으로 그걸 지운것을 확인 할 수 있어요. 

 

마지막으로 묵시적 데이터 형변환과 명시적 데이터 형변환 입니다. 

간단하게는 묵시적은 작은 쪽에서 큰 쪽으로 형변환이 자동으로 수행이 가능한 것이고, 명시적은 강제로 형 변환을 해주어야 하는 것이에요. 

 

근데 이 부분 이해가 잘 안되 공부중..short 가 2바이트고 byte 가 1바이트인데 오류가 왜나지ㅠ 아신다면 댓글좀 달아주세요! 

 

암튼, int 가 4바이트로 sbyte(1바이트), short(2바이트) 보다 더 크므로 아래는 오류가 나지 않습니다. 

int 형으로 묵시적 데이터 형변환

암시적 데이터 형 변환은 간략하게 보자면, 아래에서 b=a+b+c 는 오류가 나지 않습니다. double 이 제일 크기 때문이지요. 

하지만 c=a+b+c 는 오류가 나는데, double 형식(8바이트)를 int(4바이트)로 변환할 수 없기 때문이에요. 

 

이럴 땐 아래처럼 명시적 형변환을 해줍니다. c = (int)(a+b+c); 로 형변환을 강제로 해 주세요. 

출력값을 보자면, c=3+13.05+10=26.05 인데..버림을 하나봅니다? (이건 나중에 공부하다 나오겠죠!)

그리고 b=3+0.05+10=13.05 로 오류 없이 출력되는 것을 확인 할 수 있어요. 

 

*참고로 b를 소수가 아닌 정수로 계산한 값입니다:)

Comments