달나라 노트

C# : 변수와 자료형 (variable and data type) 본문

C#/C#

C# : 변수와 자료형 (variable and data type)

CosmosProject 2022. 3. 23. 19:40
728x90
반응형

 

 

 

C#에서의 자료형은 다음과 같습니다.

(대표적으로 몇가지만 간단하게 다뤄봅시다.)

 

분류 영어 이름 내용
논리형 bool true / false
문자형 char 길이 1인 문자
(영어, 한글 등의 문자 또는 숫자)
string 길이가 1 이상인 문자
(영어, 한글 등의 문자 또는 숫자)
숫자 int 정수
long 긴 정수
float 실수(소수점)
double 긴 실수(소수점)

 

 

 

int number;
double test_number;
char test_text;

C#에서의 변수 선언은 위처럼 자료형을 먼저 쓰고 변수 이름을 쓰면 됩니다.

즉, 변수를 선언할 때에는 선언한 변수에 들어갈 자료형을 명시해줘야 합니다.

 

 

 

int test_number;

test_number = 10;

변수에 값을 할당하기 위해선 = 기호를 이용합니다.

 

 

 

int test_int = 5;

위처럼 변수를 선언하자마자 변수에 값을 할당할 수 있습니다.

이것을 초기화라고 합니다.

 

 

 

char test = 'A';
string test_string = "Apple Banana Test string";

문자 선언은 위처럼 할 수 있습니다.

 

주의점은 다음과 같습니다.

1. char 타입은 문자의 길이가 1개인 문자만 할당할 수 있다.

2. string 타입은 문자의 길이가 1개 이상인 문자를 할당할 수 있다.

3. char 타입은 따옴표(')로 문자를 감싸서 할당해야 한다.

4. string 타입은 쌍따옴표(")로 문자를 감싸서 할당해야 한다.

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        char test = 'A';
        string test_string = "Apple Banana Test string";
        Console.WriteLine(test);
        Console.WriteLine(test_string);
    }
}


-- Result
A
Apple Banana Test string

실제 코드에 적용해보면 위와 같습니다.

 

 

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        int test = 1;
        test = 2;
        Console.WriteLine(test);
    }
}


-- Result
2

변수를 1로 할당한 후 2로 재할당하면 가장 마지막에 할당된 2로 덮어씌워집니다.

 

 

 

 

int test_value_1 = 1.876;

위처럼 int type에 소수점 데이터를 할당하는 것은 불가능합니다.

에러가 발생합니다.

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        int test_value_1 = 10;
        double test_value_2 = 8.935;

        test_value_2 = test_value_1;
        Console.WriteLine(test_value_1);
        Console.WriteLine(test_value_2);
    }
}


-- Result
10
10

위 예시는 int타입의 10을 double 타입의 변수에 할당한 결과입니다.

double 타입은 int타입보다 더 큰 범위의 숫자를 가질 수 있으므로 10이라는 숫자가 그대로 출력됩니다.

 

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        int test_value_1 = 10;
        double test_value_2 = 8.935;

        test_value_1 = test_value_2;
        Console.WriteLine(test_value_1);
        Console.WriteLine(test_value_2);
    }
}

double 타입의 8.935를 int 타입의 변수에 할당한 결과입니다.

더 큰 데이터인 double을 더 작은 타입인 int에 할당하는 것을 불가하므로 에러가 발생합니다.

 

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        int test_value_1 = 10;
        double test_value_2 = 8.935;

        test_value_1 = (int)test_value_2;
        Console.WriteLine(test_value_1);
        Console.WriteLine(test_value_2);
    }
}


-- Result
8
8.935

 

using System;

class MyProgram
{
    static void Main()
    {
        int test_value_1 = 10;
        double test_value_2 = 8.935;

        test_value_2 = (double)test_value_1;
        Console.WriteLine(test_value_1);
        Console.WriteLine(test_value_2);
    }
}


-- Result
10
10

위 예시는 cast (자료형 변환 기능)를 사용한 예시입니다.

 

(변환할 자료형)데이터

위처럼 사용할 수 있으며 데이터를 괄호 안에 적힌 자료형으로 변환한 후 다른 변수에 할당합니다.

 

test_value_1 = (int)test_value_2;

따라서 위 식은 test_value_2에 저장된 데이터를 정수(int)형태로 바꾼 후 test_value_1변수에 할당한다는 의미입니다.

 

 

 

 

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        int test_value_1 = 3;
        double test_value_2 = 8.935;

        double result = test_value_1 * test_value_2
        Console.WriteLine(result);
    }
}

위 예시처럼 자료형이 다른 숫자를 연산하는 것은 불가능합니다.

 

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        int test_value_1 = 3;
        double test_value_2 = 8.935;

        double result = (double)test_value_1 * (double)test_value_2;
        Console.WriteLine(result);
    }
}


-- Result
26.805

double로 자료형을 바꿔준 후 곱하기를 하게 되면 그 결과도 double로 나타나게 됩니다.

이렇게 자료형이 다른 데이터간의 연산은 동일한 자료형으로 변환(cast)해준 후 진행해야합니다.

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        int test_int = 12345;
        long test_long = 1234567891L;

        float test_float = 1.234F;
        double test_double = 1.234D;

        Console.WriteLine(test_int);
        Console.WriteLine(test_long);
        Console.WriteLine(test_float);
        Console.WriteLine(test_double);
    }
}


-- Result
12345
1234567891
1.234
1.234

int는 정수이며 long은 더 큰 범위의 정수를 담을 수 있습니다.

long 타입을 선언할 땐 위 예시처럼 숫자의 맨 오른쪽에 L이라는 기호를 붙여서 선언해도 됩니다. (L은 안써도 됩니다.)

 

float, double은 모두 소수점을 가진 실수데이터를 저장합니다. 다만 double이 float보다 더 큰 범위의 실수를 저장할 수 있습니다.

float, double을 선언할 때에는 그냥 1.234처럼 숫자만 입력해도 되지만 위 예시처럼 F, D라는 키워드를 숫자에 붙여줌으로써 이 숫자가 float이다 또는 double이다 라는 표시를 확실하게 해줄 수 있습니다.

(F, D 키워드는 안붙여도 됩니다.)

 

float과 double 중 무엇을 사용해야하는지에 대한 고민은 크게 할 필요 없습니다.

float은 소수점 6~7자리정도의 정확도를 가지고 double은 소수점 15자리 정도의 정확도를 가지기 때문에 메모리가 엄청나게 부족한게 아니라면 대부분 double을 사용하면 됩니다.

 

 

 

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        var test_var = "Test var";
        Console.WriteLine(test_var);

        test_var = "New var";
        Console.WriteLine(test_var);
    }
}


-- Result
Test var
New var

변수는 var 키워드로도 선언할 수 있습니다.

var 키워드는 별도로 자료형을 지정하지 않은 상태의 변수를 만들고 할당되는 값에 따라 자동으로 자료형을 결정하는 것이죠.

 

위 예시는 var 키워드로 변수를 선언하고 Test var라는 string 타입의 데이터를 할당합니다.

 

그리고 test_var = "New var"; 부분에서 보는 것 처럼 다른 값을 재할당(reassign)할 수 있죠.

 

 

 

 

using System;

class MyProgram
{
    static void Main()
    {
        var test_var = "Test var";
        Console.WriteLine(test_var);

        test_var = 1;
        Console.WriteLine(test_var);
    }
}

단 위 예시처럼 var 키워드로 변수를 선언하고 Test var라는 string데이터를 넣어놨는데

이후에 1같은 다른 자료형을 assign하는 것은 불가능합니다.

 

따라서 위 예시는 에러가 발생합니다.

 

 

 

 

 

 

728x90
반응형
Comments