1. 변수(Variable)

데이터를 만들고 사용하기 이전에, 먼저 사용할 데이터를 변수로 선언해야 한다.

만약 게임속 내 캐릭터에게 hp라는 개념을 부여하고 싶고, 이것의 초기값이 1000이라고 한다면

int hp = 1000;

이런식으로 선언해 줄 수 있다.

여기서 hp는 데이터의 이름으로 사용자가 임의로 바꿔줘도 된다.

int는 자료형을 뜻하는데 데이터가 정수냐, 글자냐, 실수냐 등을 의미한다.

만약 a, b, c를 각각 10, 100, 1000으로 선언하고자 한다면

int a = 10, b = 100, c = 1000;

이런식으로 선언해 줄 수 있다.

 

자, 지금까지 해본건 정수를 선언하는 것이다.

그리고 정수 말고도 다양한 데이터가 있으며

심지어 정수도 int 말고도 여러가지가 있고 이를 정리하면 다음과 같다.

정수

이름 가용범위 설명
sbyte -128 ~ 127 부호가 있는 8비트 정수
byte 0 ~ 255 부호가 없는 8비트 정수
short -32768 ~ 32767 부호가 있는 16비트 정수
ushort 0 ~ 65535 부호가 없는 16비트 정수
int -2147483648 ~ 2147483647 부호가 있는 32비트 정수
uint 0 ~ 4294967295 부호가 없는 32비트 정수
long -9223372036854775808 ~ 9223372036854775807 부호가 있는 64비트 정수
ulong 0 ~ 18446744073709551615 부호가 없는 64비트 정수

같은 정수형이라고 해도, 무엇으로 선언했느냐에 따라, 최대로 담을 수 있는 숫자가 다르다.

이는 아무리 컴퓨터라도 무한한 데이터를 저장할 수 없기에 발생하는 것으로

적은 범위의 정수형을 사용하면 그만큼 컴퓨터 자원을 적게 먹기 때문에 효율적이다.

여기서 가장 많이 사용하는것이, 맨 처음에 사용한 int이며 실제로 저 범위를 벗어난 숫자를 사용할 경우는 잘 없다.

 

먄약 sbyte에 200이라는 숫자를 넣으면 어떻게 될까?

이럴 경우, 오버플로우가 발생하며, 가장 낮은 숫자부터 올라간다.

즉, 200 - 127 = 73이므로 73만큼 초과했으며

-128 + 73 = - 55이므로 -55가 되어버리는 것이다.

적은 변수형에다 큰 수를 넣어버리면 제대로 작동하지 않는 것이다.

 

만약에 해당 자료형의 최댓값, 최솟값을 사용하고 싶다면

Console.WriteLine(short.MinValue)

이런식으로 MaxValue, MinValue 메소드를 사용할 수 있다.

 

정수 - 2진수와 16진수

모든 정수형은 기본적으로 10진수며 이는 인간이 가장 보편적으로 사용하는 진법이다.

그러나, 때로는 16진수나 2진수와 같은 숫자를 써야할 때가 있다.

 

예를 들어, 10진수 255는 2진수로는 11111111, 16진수로는 FF다.

이를 a, b, c로 각각 선언해보자

int a = 255;
int b = ob11111111;
int c = oxFF;

여기서 a는 10진수, b는 2진수, c는 16진수다.

뭔가 이상한게 추가된 것을 볼 수 있다.

즉, 2진수를 선언하고 싶다면 ob라는 접두사를, 16진수를 선언하고 싶다면 ox라는 접두사를 붙인다.

 

만약 기존 10진수를 16진수로 바꾸고 싶다면 어떻게 해야 할까?

int a = 100

string b = Convert.ToString(i, 16);

이런식으로 Convert를 사용해서 바꿔주는 것이 가능하다.

 


부동 소수점

이번에는 실수를 알아보자

실수는 의외로 몇개 없다.

float 1.5 X 10^-45 ~ 3.4 X 10^38 4바이트로 6~9개 자릿수
double 5.0 X 10^-324 ~ 1.7 X 10^308 8바이트로 15~17개 자릿수
decimal 1.0 X 10^-28 ~ 7.9228 X 10^28 16바이트로 28~29개 자릿수

...뭔가 표가 되게 보기 불편한데

그냥 쉽게 말하자면 float가 가장 작고 double이 그 다음이며, decimal이 가장 크다고 생각하면 된다.

 

여기서 가장 보편적으로 사용되는것이 float다.

사용상의 주의사항

float a = 1.0f;
double b = 1.0;
decimal c = 1.0m;

보시다시피 float는 선언할 때 접미사 f를, decimal은 접미사 m을 붙인다.

double은 기본값으로 되어 있기 때문에 붙이지 않아도 된다.

 

 

참고사항

자바스크립트에서도 있었던 문제인데 부동소숫점간의 연산은 지양하는 것이 좋다.

float a = 0.1f;
float b = 0.2f;
float c = 0.3f;
Console.Write(a+b==c);

이걸 출력하면 false가 나온다.

분명 0.1과 0.2를 더하면 0.3이 맞음에도 불구하고, 심지어 a와 b를 더한것을 출력하라고 하면 0.3이 나옴에도

정작 0.1 + 0.2 == 0.3 을 출력하면 false가 나온다.

이는 소숫점 계산이 완벽하게 정확하게 떨어지지 않는 컴퓨터의 특성에서 비롯된 것이므로

가급적이면 부동소숫점간의 정확한 연산이 필요할 경우, 다른 방법을 생각해봐야할듯 하다.

 


문자와 문자열 (char, string)

이번엔 문자 데이터를 알아보자

문자란 말 그대로 한 글자를 의미하고 문자열은 많은 글자를 의미한다.

사용법 예는 다음과 같다.

char a = 'A';
string b = "abcdefg";

보시다시피 문자는 작은 따옴표를, 문자열은 큰 따옴표를 쓴다.

문자에는 여러 글자를 넣을 수 없다.

 

문자열 제어

"Hello" + "World" = "HelloWorld"	//두 문자열 더하기
"Hello" == "World"			//두 문자열 비교

두 스트링을 더하면 하나가 된다.

두 번째 줄의 경우, 좌 우 문자열이 같은가를 비교하는 구문

 

string a = "AAaaBBcc";
Console.WriteLine(a.ToUpper());		//AAAABBCC
Console.WriteLine(a.ToLower());		//aaaabbcc

대문자와 소문자를 바꿔주는 구문이다.

 


bool

논리 데이터로 true와 false를 말한다.

기본값은 false이며 조건문에서 많이 사용한다.

 

bool a = true;

요런 식으로 사용

 

 

 

 

+ Recent posts