자료관리/C#

02. 변수

noc777 2025. 1. 24. 12:29
변수

 

변수는 데이터를 저장할 수 있는 공간입니다.

(형식) (이름)
string name;

변수는 기본적으로 데이터 형식과 이름을 붙인 형태입니다.

 

데이터 형식

다르게 말하자면 자료형이라고도 부릅니다.  후술하겠지만 해당 형식은 이 데이터의 분류가 무엇인지를 나타냅니다.

string 은 문자열이라는 뜻으로 사람의 이름, 반려견의 종 등 문자로 나타낼 수 있는 정보들을 담아두는 그릇이라고 생각하면 됩니다.

이외에도 숫자만 담아놓는 그릇 등 데이터의 분류에 따라 다른 형식을 써야합니다.

 

변수 이름

변수가 데이터를 저장할 수 있는 공간이고 데이터 형식을 적어주어야 한다면 

이 변수들을 구분하기 위해서 이름을 정해주는 것이라고 생각하면 됩니다.

string name1;
string name2;

 

 

변수의 저장

 

데이터를 저장하는 공간이라고 해도 처음부터 데이터가 저장되어 있진 않습니다.

그저 데이터를 집어넣기위한 공간만이 준비되어 있죠.

 

string name = "Daimond";

 

수학에서는 ' = ' 기호를 같다라고 적는다면  프로그래밍에선 대입또는 할당이라는 개념으로 쓰입니다.

대입은 쉽게 생각하면 오른쪽의 내용을 왼쪽에 집어넣는다고 보면 될 것 같습니다.

이런 변수에 데이터를 할당하는 것을 '초기화' 라고 부릅니다.

초기화를 진행하지 않으면 빈값만이 변수에 들어있을 겁니다.

 

변수의 활용

 

변수를 생성하고 초기화까지 진행하였다면 활용하는 방법도 알아야합니다.

//변수를 사용하지 않고 Daimond 를 출력
Console.WriteLine("Daimond");

//변수를 활용하여 출력
Console.WriteLine(name);

위의 코드는 변수를 사용하지 않고 직접 Daimond 라는 이름을 적어준 것과 변수를 활용한 것을 나타냅니다.

Console.WriteLine 은 프롬프트에 괄호안의 내용을 출력시킵니다. 

물론 둘의 결과는 같지만 분명한 차이점이 있습니다.

 

 

변수의 변형

 

바로 변수는 프로그램 실행 중에 변형이 가능한 것입니다.

직접적으로 적은 Daimond는 변형이 불가능하지만 name 변수를 활용한 출력은 변형이 가능합니다.

//Daimond 라는 값이 들어있는 변수를 사용
Console.WriteLine(name); //출력 : Daimond


//데이터 변형
name = "Lisa";


//변형된 변수 사용
Console.WriteLine(name); //출력 : Lisa

name 변수는 처음에는 Daimond 를 출력하였으나 이후 변수에 다른 값을 할당하여 Lisa 를 출력하게 됩니다.

프로그래밍을 하다보면 데이터의 변형을 계속해서 마주하게 될 것이기에 이 활용법은 필수적이라고 생각하면 됩니다.

 

자료형

 

자료형은 위에서 얘기하였듯 데이터 형식을 말합니다. 

지금까지 사용하였던 string 은 문자를 표현한다면 int 라는 자료형은 정수(소수점이 없는 숫자) 만을 표현할 수 있습니다.

물론 string 으로도 숫자를 표현할 수는 있습니다.

string num = "1";

 

하지만 가장 다른 점은 string 즉 문자열로는 연산이 불가능한 것입니다.

//두 변수 선언
string num1 = "1";
string num2 = "2";

//더하기 연산을 시도하여 출력
Console.WriteLine(num1 + num2); //출력 : 12

위의 코드를 보면 1+2 라는 연산을 시도해보았지만 출력되는 것은 두 문자를 나열한 형태입니다.

 

//두 변수 선언
int num1 = 1;
int num2 = 2;

//연산 시도후 출력
Console.WriteLine(num1+num2); //출력 : 3

그렇기에 이 상황에선 두 정수 (int) 자료형의 변수를 사용합니다.

 

단순히 "1번째 문제!" 와 같이 숫자를 표현하는 것은 string 으로도 가능하나 연산과 같은 수행은 int 등의 다른 자료형으로 가능합니다.

따라서 자료형은 상황에 맞게 선별하는 것이 필요합니다.

 

 

자료형의 종류

 

파란색은 자주 쓰이는 자료형입니다.

초록색은 상황에 따라 활용되면 좋은 자료형입니다.

붉은색은 보통 잘 쓰이지 않는 자료형입니다.

 

자료형 특징 기본값 크기
bool true(참),false(거짓)   false 1byte
string 문자열(여러 문자를 나열한 것) 데이터를 " "로 감싼다. null 문자의 갯수만큼 계속해서 변형 
char 문자 ' '로 감싼다.
단 한글자 표현
'\0' 2byte
sbyte 8bit 정수  -128 ~ 127
만큼 값을 표현할 수 있다.
0 1byte
byte 8bit정수(양수만) 0~255
만큼 값을 표현할 수 있다.
0 1byte
short 16bit정수 –32,768 ~ 32,767
만큼 값을 표현할 수 있다.
0 2byte
ushort 16bit정수 (양수만) 0 ~ 65,535
만큼 값을 표현할 수 있다.
0 2byte
int 정수 –2,147,483,648 ~ 2,147,483,647
만큼 값을 표현할 수 있다.
0 4byte
uint 정수(양수만) 0 ~ 4,294,967,295
만큼 값을 표현할 수 있다.
음수를 사용하지 않는 상황에서 쓰임
0 4byte
float 실수 소수점 7자리까지 나타냄
0.0000001f
뒤에 f를 붙여 float임을 명시
0 4byte
double 실수 소수점 15자리까지 나타냄
0.000000000000001d
뒤에 d를 붙어 명시하지만 생략해도 인식됨

0 8byte
decimal 실수 소수점 28~29자리까지 나타냄 0 16byte

 

 

 

자료형 선택 기준은?

 

자료형의 종류는 많지만 푸른색으로 표현된 자료형이 많이 쓰이는 이유는 보편적으로 쓰이는 상황이 많은 것이기 때문입니다.

경우에 따라서 float 소수 7자리만으로 나타낼 수 없는 실수인 경우 double을 사용하는 등의 자료선택의 유연성이 필요합니다.

 

그럼 무조건 나타낼 수 있는 범위가 큰 것을 고르면 되지 않나 생각할 수도 있지만 이것은 각 자료형마다 차지하는 

메모리 공간이 다르기 때문입니다. 

맨 우측의 byte 는 각 자료형마다 차지하는 공간의 크기라고 보시면 됩니다.  

float 안에 모두 담을 수 있는 데이터를 double에 굳이 담는다면 4byte의 메모리 공간 낭비가 이루어지기에 

성능상에서 안좋은 결과가 초래될 수 있다는 것입니다.

 

형변환 (Casting)

 

형변환은 변수의 자료형을 변환하는 것을 의미합니다.

문자열을 정수로 
정수를 문자열로
정수를 실수로

 

와 같이 프로그램 실행도중 변수의 자료형을 바꿔야하는 상황이 생깁니다.

 

명시적 형변환

 

float num = 3.14;
int intNum = (int)num;

명시적 형변환은 프로그래머가 직접 형변환을 하는 것을 명시하는 것을 말합니다.

float 자료형인 num을 int 자료형에 대입할 때 (int) 와 같이 형변환을 한다고 말하는 것과 같습니다.

 

암시적 형변환

 

int num1 = 5;
float num2 = 2.5;
float result = num1 + num2;

암시적 형변환은 프로그래머가 형변환을 한다고 명시하지 않더라도 컴파일러가 자동으로 형변환을 하는 것을 말합니다.

위는 자료형이 다른 두 변수를 연산하였을 때 자동으로 형변환을 하여 연산하는 코드입니다.

 


명시적 형변환을 하는 종류

 

다른 자료형을 문자열 자료형으로 바꾸기

int num1 = 10;
string num1Str = num1.ToString(); 

float num2 = 10.5f;
string num2Str = num2.ToString();

문자열로 바꿀 땐 뒤에 ToString() 을 붙여주어 변환이 가능합니다.

 

 

 

문자열에서 다른 자료형으로 바꾸기

 

Convert 클래스 사용

string numStr = "10";
int num;
num = Convert.ToInt32(numStr);

Convert 클래스의 변환 메서드를 사용하는 방식입니다.

(바꾸려는 자료형마다 다른 메서드를 사용)

 

 

Parse 메서드 사용

string numStr = "10";
int num;
num = int.Parse(numStr);

바꾸려는 자료형 클래스를 적어두고 Parse 메서드를 호출하는 방식입니다.

 

TryParse 메서드 사용

string numStr = "10";
int num;
int.TryParse(numStr, out num);

Convert나 Parse 를 사용하여 형변환할 때는 변환할 수 없을 때 오류가 발생하기에 

먼저 변환할 수 있는지를 확인하고 변환이 가능할 때 변환을 하는 방식입니다.

'자료관리 > C#' 카테고리의 다른 글

01. C#  (0) 2025.01.23