C# 변수, 데이터형식, 상수

jin_112·2022년 7월 12일
0

공부

목록 보기
9/10

변수

변수는 쉽게 말하면 값을 담아 두는 상자와 같다.
변수는 하나의 데이터 값을 가질 수 있으며, 한번 정해진 값은 고정이 아니라 계속해서 변할 수 있다. 또한 이 변수라는 녀석은 담기는 음식에 따라 그릇이 달라지듯 담기는 데이터에 따라 변수의 자료형(data type)이 결정된다.
문자는 문자를 담을수 있는 char 자료형, 정수는 정수를 담을 수 있는 int가 있다.

자료형 변수명;

변수를 만든다X 변수를 선언한다O 선언은 컴파일러에게 어떤 대상의 이름을 알려주는 것을 의미.
컴파일러가 임의의 메모리 공간에 이름을 붙여주면, 우리는 변수의 이름을 가지고 그 메모리의 위치에 접근 할 수 있다.

int a;
//int 자료형  a 변수명

정수형 변수를 메모리 공간에 할당하고 그 공간에 a라는 이름을 붙인것

자료형

  • 정수 자료형 - 정수(1,2,3 ...) byte, sbyte, short, ushort, int, uint, long, ulong
  • 실수 자료형 - 소숫점(1.234) float, double, decimal
  • 문자 자료형 - 문자 char 문자열 string

using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            char a = '안';
            string b = "녕하세요";
 
            Console.WriteLine("{0}{1}", a, b);
        }
    }
}
안녕하세요
계속하려면 아무 키나 누르십시오...

문자는 작은따옴표(') 문자열은 큰따옴표(")로 감싸주어야 한다.

  • 논리 자료형
    참과 거짓을 다루는 bool 형식
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool a = true;
            bool b = false;
            
            Console.WriteLine("a={0}, b={1}", a, b);
        }
    }
}
a=true, b=false
계속하려면 아무 키나 누르십시오...
  • 객체 자료형
    객체(object)를 다루는 object형식
	using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            object a = 12345678910;
            object b = 12345.67891011;
            object c = true;
            object d = "안녕하세요";
            
            Console.WriteLine("a={0}, b={1}, c={2}, d={3}", a, b, c, d);
        }
    }
}
	a=12345678910, b=12345.67891011, c=True, d=안녕하세요
	계속하려면 아무 키나 누르십시오 . . .

서식지정자

서식 지정자는 내가 지정한 형식대로 문자열을 출력 할 수 있도록 도와준다.
위에서 본 {0}이나 {1}과 같은 녀석들을 서식 항목이라 하며, 서식 항목은 이와 같은 형식으로 작성 할수 있다.

{인덱스[, 출력 너비][:서식 문자열]}

대괄호로 둘러싸인것은 선택적인 요소

index는 0부터 시작하는데, "a,b,a+b" 와 같이 뒤에 열거된 값의 순서이다.

int a = 81, b = 27;
 
Console.WriteLine("{0} + {1} = {2}", a, b, a + b); // 81 + 27 = 108
Console.WriteLine("{1} - {0} = {2}", a, b, b - a); // 27 - 81 = -54

형식변환

using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 500;
            float b = a; // 암시적 변환으로 별도의 구문이 필요하지 않음 
 
            Console.WriteLine("a={0}, b={1}", a, b);
 
            double c = 123.45;
            int d = (int)c;
 
            Console.WriteLine("c={0}, d={1}", c, d);
        }
    }
}
a=500, b=500
c=123.45, d=123
계속하려면 아무 키나 누르십시오 . . .

실수와 정수를 문자열로 반환, 문자열을 실수나 정수로 형식으로 변환

using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 500;
            float b = 60.44f;
            string c = a.ToString();
            string d = b.ToString();
            
            Console.WriteLine("a={0}, b={1}, c={2}, d={3}", a, b, c, d);
 
            string e = "123";
            string f = "123.456";
            int g = int.Parse(e);
            float h = float.Parse(f);
 
            Console.WriteLine("e={0}, f={1}, g={2}, h={3}", e, f, g, h);
        }
    }
}
a=500, b=60.44, c=500, d=60.44
e=123, f=123.456, g=123, h=123.456
계속하려면 아무 키나 누르십시오 . . .

ToString() 메소드는 특정 형식의 값을 문자열 형식으로 바꿔주는 역할을 합니다.
그리고 Parse()라는 메소드를 통해 문자열을 정수나 실수로 바꿔줄 수도 있습니다.

상수

코드를 작성할 때 수천줄에서 수만줄이 넘어가는 프로그램을 만들게 될 때, 수많은 변수를 선언하여 코드를 작성하게 된다. 그러나 이 수많은 변수 중 값이 도중에 변경되어도 프로그램엔 영향을 미치지않는 것과 도중에 변경되면 심각한 오류를 일으킬 수 있는 것들이 있다.
코드를 작성하다가 나도 모르게 값을 변경하지 말아야 할 변수를 건드려서 버그가 발생할수있다.
C# 프로그래밍은 이 문제를 쉽게 해결해주는 const 라는 키워드가 존재한다.

이 const 키워드를 사용하게 되면 한번 초기화 된 값은 절대 변하지 않는다.
상수를 정의하는 방법은 변수의 선언방법과 유사하다.
상수의 선언 예제

const double PI = 3.141592;
const int month = 12;
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int a = 50;
 
            Console.WriteLine(a);
        }
    }
}
50
계속하려면 아무 키나 누르십시오 . . .

상수 a 값을 변경하게 된다면

using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int a = 50;
 
            a = 60; // 오류 발생!
 
            Console.WriteLine(a);
        }
    }
}
11행에서 오류 CS0131: 할당식의 왼쪽은 변수, 속성 또는 인덱서여야 합니다.
//값 변경이 불가능하다.

상수의 선언과 초기화를 분리한다면?

	 const int a;
 
            a = 60; // 오류 발생!
11행에서 오류 CS0145: const 필드에 값을 입력해야 합니다.

const의 특징

선언과 동시에 초기화를 하여야 하며, 초기화가 된 후로부터는 값의 변경이 불가능한 것을 알 수있다.

profile
hello there

0개의 댓글