본문 바로가기

C#/C# 기초 강의

C# 프로그래밍 강좌 4 - 변수와 자료형 1

728x90
728x90

이전 게시글을 통하여 여러분은 원하는 문장을 출력할 수 있게 되었다.

 

이제 우리는 프로그래밍에 필요한 데이터를 저장하고 이를 어떻게 출력하는지 알아볼 것이다.

변수(Variable)

간단한 수식을 하나 보자.

 

$x = 5$

 

$x$가 5라는 값을 가지고 있다는 뜻은 의무 교육과정을 이수했으면 매우 잘 알 것이다.

 

여기서 $x$가 바로 변수이다. 수치적인 값 대신 어떤 단어로 대신해서 표현하는 것이 바로 변수이다.

 

프로그래밍을 할 때는 적절한 이름의 변수를 선언하여 어떤 원하는 데이터를 넣어두고 필요할 때마다 꺼내 쓰는 게 일반적이다.

 

C#에서 변수는 이렇게 만들 수 있다.

 

int x;

 

이렇게 우리는 x라는 이름의 변수를 생성할 수 있고 이를 "선언한다"라고 표현한다.

 

앞에 있는 int라는 키워드는 32비트 정수 자료형을 뜻하는데 자료형이 무엇인지 알아보도록 하자.

자료형(Data Type)

프로그래밍에서 나오는 데이터는 어디에 보존될까? 바로 램(이하 메모리)이다. 데이터를 보존하기 위해 필요한 용량을 메모리에 할당하게 되어 데이터를 보존하게 되는 것이다.

 

그러면 그 용량은 어느 정도가 될까? 그것을 C#에서는 int와 같은 키워드로 용량과 넣을 수 있는 데이터를 한정한다. 이렇게 한정하는 역할을 하는 키워드가 바로 자료형 되시겠다.

 

이 자료형을 어떻게 설정하는지에 따라서 담을 수 있는 데이터의 범위가 달라지게 된다.

 

많이 쓰는 자료형과 특성, 메모리에 할당되는 용량은 다음과 같다.

 

자료형 이름 특성 할당 용량
int -2147483648~2147483647 범위의 정수를 담을 수 있음 4 byte
uint 0~4294967295 범위의 정수를 담을 수 있음 4 byte
long -9223372036854775808~9223372036854775808 범위의 정수를 담을 수 있음 8 byte
ulong 0~18446744073709551615 범위의 정수를 담을 수 있음 8 byte
bool 오직 true(참), false(거짓)를 값으로 가짐 1 byte
char 16비트 유니코드 범위에 해당하는 문자를 담을 수 있음 4 byte
float ±1.5 x 10^−45 ~ ±3.4 x 10^38의 범위를 가지는 실수를 담을 수 있고 소수점 6자리까지 보존하며 부동소수점 방식으로 동작함 4 byte
double ±5.0 × 10^−324 ~ ±1.7 × 10^308의 범위를 가지는 실수를 담을 수 있고 소수점 15자리까지 보존하며 부동소수점의 방식으로 동작함 8 byte
decimal ±1.0 x 10^-28 ~ ±7.9228 x 10^28의 범위를 가지는 실수를 담을 수 있고 고정소수점 방식으로 동작함 16 byte
string 엄밀히 말해 자료형이 아니며(클래스) char의 집합 4 * 문자열의 길이 byte

 

프로그래밍을 처음 배우는 사람은 중간에 나오는 용어는 건너뛰고 자료형마다 담을 수 있는 수치에만 집중해도 괜찮다.

 

그렇다면 위의 int x는 대략 -21억~21억 정도의 값을 담을 수 있음을 이해할 수 있다.

쓰레기 값

저 키워드에 따라 특정 범위를 가진 변수를 만들 수 있는 건 알겠는데 만들어진 변수 안에는 어떤 값이 존재할까?

 

알 수 없다. 변수를 만들기 위해 메모리에 일정 용량을 할당한다는 말을 기억해보자.

 

해당 메모리 조각은 우리가 만든 프로그램이 사용하기 전에 다른 프로그램이 사용해서 무슨 값이 들어있었을 거다. 그리고 당연히 다른 프로그램이 뭘 넣었는지 알 수 없다.

 

그래서 변수를 선언만 한 상태에서 들어있는 값을 알지도 못하고 쓰지도 않으니 쓰레기 값이라고 부른다.

 

그래서 우리는 이 변수를 잘 사용하기 위해 값을 대입하는 "초기화" 과정을 거칠 필요가 있다.

 

이때 초기화는 어떤 대상을 만들었을 때 그 대상의 초기 상태를 설정하는 작업이다. 앞으로 관련한 작업에 관해서 초기화라는 단어를 사용할 것이다.

 

다음 코드를 보자.

 

using System;

namespace Learning
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 20;

            int y;
            y = 30;
        }
    }
}

 

이 코드는 int 변수들을 초기화하는 두 가지 방법을 보여주고 있다.

 

x는 선언과 동시에 20을 대입, y는 선언 후 나중에 30을 대입하고 있다.

 

두 방법 다 문제가 없으며 여러분은 상황에 따라 적절한 방법을 사용하면 된다.

 

이제 이 두 변수를 두 변수를 더하고 곱한 결과를 WriteLine 메소드로 출력해보자.

 

using System;

namespace Learning
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 20;
            int y = 30;
            double z = 2.222;

            Console.WriteLine(x);
            Console.WriteLine(y);
            Console.WriteLine(x * z);
            Console.WriteLine(x + y);
        }
    }
}

/* 출력 결과
20
30
44.44
50
*/

 

이렇게 손쉽게 변수를 화면에 출력할 수 있다. 게다가 3,4번째 WriteLine에 보는 것처럼 계산 후 출력을 하게 할 수 있다!

 

물론 3번째와 4번째처럼 변수끼리는 사칙 연산이 가능하다.

// 더하기
Console.WriteLine(x + y);

// 빼기
Console.WriteLine(x - y);

// 곱하기
Console.WriteLine(x * z);

// 나누기
Console.WriteLine(x / z);

 

또한 이렇게 계산한 값을 다른 변수에 재대입 하는 것 또한 가능하다.

x = x + y; // x에 x와 y를 더한 값을 다시 대입

 

"x에 5를 더한다"는 이렇게 쓴다.

x = x + 5;

 

위와 같이 하나의 변수만을 가지고 값을 변화시키는 경우는 축약된 표현을 쓸 수 있다. 이는 대부분의 프로그래밍 언어에서 지원하는 문법이다.

x += 5; // 위 코드와 완전히 똑같은 기능을 한다.

// 그 외 나머지도 똑같은 문법으로 쓸 수 있다.

x -= 5; // x에 5를 뺀다.
x *= 10; // x에 10을 곱한다.
x /= 2; // x를 2로 나눈다.

 

[사용하는 연산자]= 이렇게 붙여쓰며 x = x + 5라고 쓰는 것보다 훨씬 간결하니 하나의 변수만 조작할 때는 이 방법을 애용하면 되겠다.

 

여기까지 말한 사칙연산 외에도 C#에서는 다양한 연산자가 존재하며(다른 언어에서도 마찬가지로 존재하는) 그들도 위처럼 축약형으로 사용할 수 있다. 하지만 여러분은 아직 그것을 배울 정도는 아니고 공부해가면서 차차 알게 될 것이다.

 

이제 여러분은 자료형과 변수의 기초에 대해 배우고 이를 출력하는 방법을 알게 되었다. 다음 게시글에서는 이에 대해 좀 더 깊게 배워본다.

 

728x90
728x90