1.변수

 

저번 시간에는 출력에 관하여 코딩을 배워보았습니다. 이번 시간에는 변수와 자료형에 관하여 배워보도록 하겠습니다.

변수와 자료형에 관해서 배우려면 우선 변수를 알아야 하는데 이 [변수라는 것은 상자와 같습니다.]

각 변수는 하나의 값을 담을 수 있으며 그 값은 계속 변할 수 있습니다.

그리고 그 값에 따라 변수의 형태 (Type) 가 정해지게 됩니다.

이러한 부분에 대해 코드로 보자면

int a;
double b;
char c;

와 같은 형태로 볼 수 있는데 코드를 해석해보자면

 

(변수의 형태) (변수 이름) ; 으로 해석할 수 있습니다.

int 라고 하는 변수 형태에 [a라는 이름으된 상자]를 마련했다고 생각하면 편합니다.

 

이러한 상자에는 값을 담을 수 있는데 그 형태를 코드로 보자면

int a = 1;
double b = 1.2;
char c = 'A';

※코드를 보면  '=' 이라는 표시가 있는데 이는 수학의 '=' 과는 다른 의미 입니다.

   수학에서 '=' 은 '같다' 의 의미지만 코딩에서 '='은 [왼쪽에 있는 값을 오른쪽의 변수(상자)에 담는다.]는 의미 입니다. 

 

이 코드를 해석해보면

(변수의 형태) (변수의 이름) = 1

(변수의 형태) (변수의 이름) = 1.2;

(변수의 형태) (변수의 이름) = 'A';  인 것입니다.

 


2. 자료형

기본 자료형(Primitive Data Type) : 개발자가 별도의 코드를 만들지 않아도 언어에서 자체적으로 제공하는 데이터 형식

자료형 형식 범위 크기 부호
sbyte System.Sbyte -128~127 (0을 포함하기 때문) 8bit (1byte) O
byte System.Byte 0~255 8bit (1byte) X
short System.Int16 -32,768 ~ 32,767 16bit (1byte) O
ushort System.Uint16 0 ~ 65,535 16bit (1byte) X
int System.Int32 -2,147,483,648~2,147,483,647 32bit (1byte) O
uint System.UInt32 0 ~ 4,294,967,295 32bit (1byte) X
long System.Int64 -9,223,372,036,854,775,808 ~
 9,223,372,036,854,775,808
64bit (1byte) O
ulong System.UInt64 0 ~ 18,446,744,073,709,551,615 64bit (1byte) X
float System.Single ±1.5e-45 ~ ±3.4e38 4byte





double System.Double ±5.0e-324 ~ ±1.7e308 8byte
decimal System.Decimal ±1.0 × 1028  ±7.9 × 1028 16byte
char System.Char U+0000 ~ U+ffff 유니코드 16bit
string System.String   8bit (1byte)
bool System.Boolean   8bit (1byte)

 


2-1. 정수 자료형

 

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte a = 200;
            sbyte b = -126;
            short c = 30000;
            ushort d = 40000;
            int e = 100000000;
            uint f = 1000000000;
            long g = 1000000000000000000;
            ulong h = 10000000000000000000;

            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.WriteLine(d);
            Console.WriteLine(e);
            Console.WriteLine(f);
            Console.WriteLine(g);
            Console.WriteLine(h);
        }
    }
}

위 코드는 정수 자료형 (byte, sbyte, short, ushort, int, uint, long, ulong) 에 관한 입력과 출력입니다.

 

설정해둔 숫자 외에 추가로 0을 붙이거나 1을 올려서 적으면 오버플로우나 언더플로우가 발생하게 됩니다.

 

※ 오버플로우 : 데이터 형식의 범위를 넘어가는 값일 경우 오버플로가 발생하여 제일 작은 음수 값으로 넘어가는 것.

※ 언더플로우 : 데이터 형식의 범위를 넘어가는 값일 경우 언더플로가 발생하여 제일 큰 양수 값으로 넘어가는 것.

 

 

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
           byte a = 255;
           sbyte b = -128;

            a++;//실행시 오버플로우가 발생하여 0부터 시작
            b--;//실행시 언더 플로우가 발생하여 128부터 시작

            Console.WriteLine(a);
            Console.WriteLine(b);
        }
    }
}

위 코드를 실행시켰을 때 우리는 a값에는 오버플로우가 발생하는 것을 b값에는 언더플로우가 발생하는 것을 볼 수 있습니다.

오버플로우 , 언더플로우 발생 모습


2-2. 실수 자료형
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            float a = 123.567891011f;
            double b = 1234.567878910111213;
            decimal c = 1234.56789101112131415161718m;

            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
        }
    }
}

위 코드는 실수 자료형 (float, double, decimal) 을 입출력 하는 코드입니다.

정수 자료형의 코드와 비슷해보이지만 잘 보면 다른게 있는데 바로 float자료형의 값의 끝에는 f가 붙고

decimal 자료형의 끝에는 m이 붙어있는 것을 볼 수 있습니다.

C#의 실수 자료형의 기본은 double 이며 자료값에 f, m 을 붙히지 않으면 double 자료형으로 인식이 되는데 이를 방지하고 '이 자료는 float의 형태입니다.' 또는 'decimal의 형태입니다.'를 나타내어 주기 위해서는 f,m을 반드시 붙혀야합니다.

 

만약 이를 제거하고 실행하게 될 시

라고하는 오류를 볼 수 있으므로 꼭 float 자료형에는 'f', decimal자료형에는 'm'을 붙혀주셔야 합니다.


2-3. 문자, 문자열 자료형
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            char a = 'A';           //문자
            String b = "Hello!";    //문자열
            
            
            Console.WriteLine(a);
            Console.WriteLine(b);
        }
    }
}

※문자(char) : 문자는 'A' , 'b' , 'a' , '!' 등과 같은 단일 기호를 말한다.

※문자열(String) : 문자열은 "Hello" , " World !" 와 같은 두개 이상의 문자 조합으로 만들어진 것이다.

 

문자와 문자열의 구분은 반드시 해주어야 하는데 이를 

작은 따옴표 '  ' (문자) 큰 따옴표 "  " (문자열)로 구분해주어야 합니다.


2-4. 논리 자료형
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool a = true;
            bool b = false;

            Console.WriteLine(a);
            Console.WriteLine(b);
        }
    }
}

논리(boolean) 자료형은 참과 거짓을 나타내는 자료형입니다.

보시면 문자열(String) 자료형과 같이 비슷하게 문자열 값을 그대로 도출하는 것 처럼 보이실 수 있겠지만

따옴표의 존재 없이 변수에 참(true) 과 거짓(false)를 담고 있습니다.


2-5. 객체(object) 자료형

객체(object) 자료형은 각각의 존재를 다루는 것 입니다.

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            object a = 12345678910; //정수
            object b = 12345.678910;//실수
            object c = true;        //논리
            object d = "안녕하세요";//문자열

            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.WriteLine(d);
        }
    }
}

코드에서 볼 수 있는 것 처럼 Object 안에는 정수, 실수, 논리, 문자열 이 모두 들어가 있고 제대로 출력되고 있습니다.

※모든 자료형이 가능

이렇게 사용 할 수 있는 이유는 object(객체 자료형)가 모든 자료형의 조상격이라고 할 수 있기 때문입니다.

(※object라는 것에 대해서 제대로 이해하기 위해서는 객체, 클래스에 대한 이해가 동반되어야 하기에

      차후 추가로 설명하도록 하겠습니다.)


여기까지 C# 변수와 자료형에 대해 다루어보았습니다.

다음 게시물은 C# "출력문" 입니다. 

'C#' 카테고리의 다른 글

[C#_6] 반복문(for,foreach,while,do while)  (0) 2021.09.24
[C#_5] 조건문 (if, else, switch)  (0) 2021.09.23
[C#_4] 출력문, 입력문, 연산자, 문자열 보간  (0) 2021.09.21
[C#_2] 콘솔 출력  (0) 2021.09.07
[C#_1] C# 설치  (0) 2021.09.07

+ Recent posts