KyuHyuk Lee

KyuHyuk Lee

Software Developer

© 2020

[C#] 자료형과 변수, 상수

기본 자료형

Numerical integer types

7 또는 1024와 같은 정숫값을 저장할 수 있습니다. 이 자료형은 다양한 크기로 존재하며, 음수 값을 지원하는지에 따라 부호가 있거나 없습니다.

자료형 크기 범위
byte 1Byte 0~255
sbyte 1Byte -128~127
short 2Byte -32,768~32,767
ushort 2Byte 0~65,535
int 4Byte -2,147,483,648~2,147,483,647
uint 4Byte 0~4,294,967,295
long 8Byte -922,337,203,685,477,508~922,337,203,685,477,507
ulong 8Byte 0~18.446,744,073,709,551,615

아래 예제는 정수형 변수에 데이터를 넣고 출력하는 프로그램입니다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class IntegerTypes
    {
        static void Main(string[] args)
        {
            int a = 5;
            int b = 1;

            WriteLine($"a = {a}, b = {b}, a + b = {a+b}");
        }
    }
}
a = 5, b = 1, a + b = 6

아래 예제는 MaxValue를 사용하여 각 자료형의 최대값을 출력하는 프로그램입니다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class IntegerTypes
    {
        static void Main(string[] args)
        {
            byte maxByte = byte.MaxValue;
            sbyte maxSbyte = sbyte.MaxValue;
            short maxShort = short.MaxValue;
            ushort maxUshort = ushort.MaxValue;
            int maxInt = int.MaxValue;
            uint maxUint = uint.MaxValue;
            long maxLong = long.MaxValue;
            ulong maxUlong = ulong.MaxValue;

            WriteLine($"maxByte = {maxByte}, maxSbyte = {maxSbyte}");
            WriteLine($"maxShort = {maxShort}, maxUshort = {maxUshort}");
            WriteLine($"maxInt = {maxInt}, maxUint = {maxUint}");
            WriteLine($"maxLong = {maxLong}, maxUlong = {maxUlong}");
        }
    }
}
maxByte = 255, maxSbyte = 127
maxShort = 32767, maxUshort = 65535
maxInt = 2147483647, maxUint = 4294967295
maxLong = 9223372036854775807, maxUlong = 18446744073709551615

Floating-point types

3.14 또는 0.01과 같은 실수를 나타낼 수 있습니다. 3가지의 부동 소수점 자료형에 따라 다른 수준의 정밀도를 제공합니다.

자료형 크기 범위
float 4Byte -3.402823e38~3.402823e38
double 8Byte -1.79769313486232e308~1.79769313486232e308
decimal 16Byte ±1.0 × 10e-28~±7.9 × 10e-28
using System;
using static System.Console;

namespace FirstCSharp
{
    class FloatingPointTypes
    {
        static void Main(string[] args)
        {
            /* float 변수에 값을 할당할 때는 f를 붙여야 합니다. */
            float piFloat = 3.1415926535897932384626433832795028841971693993751f;
            WriteLine(piFloat);

            double piDouble = 3.1415926535897932384626433832795028841971693993751;
            WriteLine(piDouble);
        }
    }
}
3.1415927
3.141592653589793

3.1415926535897932384626433832795028841971693993751를 입력했지만, float 변수는 3.1415927 double 변수는 3.141592653589793를 출력합니다.
이런 이유는 저장할 수 있는 부분까지만 저장하고 나머지는 버렸기 때문입니다.

decimal도 실수를 다루는 자료형입니다. 앞에서 설명한 floatdouble보다 더 정밀도가 높습니다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class FloatingPointTypes
    {
        static void Main(string[] args)
        {
            /* float 변수에 값을 할당할 때는 f를 붙여야 합니다. */
            float piFloat = 3.1415926535897932384626433832795028841971693993751f;
            WriteLine(piFloat);

            double piDouble = 3.1415926535897932384626433832795028841971693993751;
            WriteLine(piDouble);

            /* decimal 변수에 값을 할당할 때는 m를 붙여야 합니다. */
            decimal piDecimal = 3.1415926535897932384626433832795028841971693993751m;
            WriteLine(piDecimal);
        }
    }
}
3.1415927
3.141592653589793
3.1415926535897932384626433833

Character types

A 또는 $와 같은 단일 문자를 나타낼 수 있습니다. 가장 기본적인 유형은 char이며 2바이트 문자입니다.

C#에서 기본적으로 char은 2 bytes입니다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class CharacterTypes
    {
        static void Main(string[] args)
        {
            char a = '이';
            char b = '규';
            char c = '혁';

            WriteLine($"{a}{b}{c}");
        }
    }
}
이규혁

String

문자열 클래스를 사용하면 단어나 문장과 같은 일련의 문자를 저장할 수 있습니다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class String
    {
        static void Main(string[] args)
        {
            string hello = "안녕하세요, 이규혁 입니다!";
            WriteLine(hello);
        }
    }
}
안녕하세요, 이규혁 입니다!

Boolean type

Boolean type은 참(True)과 거짓(False)를 저장 할 수있는 자료형입니다.

자료형 크기 범위
bool 1Byte True, False
using System;
using static System.Console;

namespace FirstCSharp
{
    class String
    {
        static void Main(string[] args)
        {
            bool t = true;
            bool f = false;
            WriteLine(t);
            WriteLine(f);
        }
    }
}
True
False

Object Type

object는 어떤 자료형이든지 넣을 수 있는 자료형입니다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class ObjectType
    {
        static void Main(string[] args)
        {
            object name = "KyuHyuk Lee";
            object birthday = 931004;
            object pi = 3.1415926535897932384626433832795028841971693993751;
            WriteLine(name);
            WriteLine(birthday);
            WriteLine(pi);
        }
    }
}
KyuHyuk Lee
931004
3.141592653589793

상수(Constants)

상수는 고정된 값을 가진 표현식입니다. 선언 방식은 아래와 같습니다.

/* const 자료형 상수명 = 값; */
const double pi = 3.14;

사용 방법은 변수와 똑같은 방법으로 사용하면 됩니다. 단, 상수의 값은 변경할 수 없습니다.

Nullable

어떤 값도 가지지 않는 변수가 필요할 때, Nullable 형식을 사용합니다.

여기서 어떤 값도 가지지 않는 변수는 0이 아닌 Null 값을 가진 변수를 말합니다.

선언 방식은 아래와 같습니다.

자료형? 변수명;

아래 예제를 보고 Nullable에 대해 이해해봅시다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class Nullable
    {
        static void Main(string[] args)
        {
            int? birthday = null;
            WriteLine(birthday.HasValue);
            WriteLine(birthday == null);

            birthday = 931004;
            WriteLine(birthday.HasValue);
            WriteLine(birthday == null);
            WriteLine(birthday.Value);
        }
    }
}
False
True
True
False
931004

‘var’ Keyword

var을 사용하면 자료형을 알아서 자동으로 선언할 수 있습니다.

using System;
using static System.Console;

namespace FirstCSharp
{
    class Var
    {
        static void Main(string[] args)
        {
            var name = "KyuHyuk Lee";
            WriteLine("Type : {0}, Value : {1}", name.GetType(), name);

            var birthday = 931004;
            WriteLine("Type : {0}, Value : {1}", birthday.GetType(), birthday);

            var pi = 3.14;
            WriteLine("Type : {0}, Value : {1}", pi.GetType(), pi);
        }
    }
}
Type : System.String, Value : KyuHyuk Lee
Type : System.Int32, Value : 931004
Type : System.Double, Value : 3.14