본문 바로가기

개인공부/C#

[C#] 변수(Variable), 상수(Constant)

 

 

■ 변수 (Variable) :

 - 값을 대입시켜 변화시킬 수 있는 요소

 - 데이터를 담는 일정 크기의 공간

 - 값 형식 : 변수에 값을 담는 형식

  · Stack Memory에 값을 저장

 - 참조 형식 : 값이 있는 곳의 위치(메모리 주소)를 담는 형식

  · Heap Memory에 값을 저장, Stack Memory에 값이 들어있는 Heap Memory 주소 저장

 

변수 종류 :

데이터 형식 설명 형식 크기(byte) 값의 범위
byte 부호 없는 정수 1(8bit) 0~255
sbyte signed byte 정수 1(8bit) -128~127
short 정수 2(16bit) -32,768~32,767
ushort unsigned short 부호 없는 정수 2(16bit) 0~65,535
int 정수 4(32bit) -2,147,483,648~2,147,483,647
uint unsigned int 부호 없는 정수 4(32bit) 0~4,294,967,295
long 정수 8(64bit) -922,337,203,685,477,508 ~ 922,337,203,685,477,507
ulong unsigned long 부호 없는 정수 8(64bit) 0~18,446,744,073,709,551,615
float 부동 소수점 형식
(소수점 7자리)
4(32bit) -3.402823e38 ~ 3.402823e38
double 부동 소수점 형식
(소수점 15~16자리)
8(64bit) -1.79769313486232e308 ~ 1.79769313486232e308
decimal 부동 소수점 형식
(소수점 29자리)
16(128bit) ±1.0 x 10-28  ~ ±7.9228 x 1028
char 유니코드 문자 2(16bit)  
string 문자열 참조    
bool 논리 형식 1(8bit) True or False
object 모든 형식 참조    

 

■ Example

sbyte a = -100;
byte b = 200;
Console.WriteLine($"sbyte a = {a}");
Console.WriteLine($"byte b = {b}");
Console.WriteLine();

short c = -30000;
ushort d = 60000;
Console.WriteLine($"short c = {c}");
Console.WriteLine($"ushort d = {d}");
Console.WriteLine();

int e = -20000000;
uint f = 400000000;
Console.WriteLine($"int e = {e}");
Console.WriteLine($"uint f = {f}");
Console.WriteLine();

long g = -9000000000000000000;
ulong h = 18000000000000000000;
Console.WriteLine($"long g = {g}");
Console.WriteLine($"ulong h = {h}");
Console.WriteLine();

float i = 3.141592653589793238462643383279f;
double j = 3.141592653589793238462643383279;
decimal k = 3.141592653589793238462643383279m;
Console.WriteLine($"float i = {i}");
Console.WriteLine($"double j = {j}");
Console.WriteLine($"decimal k = {k}");
Console.WriteLine();

char l = '변';
char m = '수';
string n = "종류 입니다.";
Console.WriteLine($"char i = {l}");
Console.WriteLine($"char m = {m}");
Console.WriteLine($"string n = {n}");
Console.WriteLine();

bool o = true;
bool p = false;
Console.WriteLine($"bool o = {o}");
Console.WriteLine($"bool p = {p}");
Console.WriteLine();

object q = 100;
object r = 3.14;
object s = true;
object t = "변수 예제 입니다.";
Console.WriteLine($"object q = {q}");
Console.WriteLine($"object r = {r}");
Console.WriteLine($"object s = {s}");
Console.WriteLine($"object t = {t}");
Console.WriteLine();

 

Example 결과

상수 (Constant) :

 - 변하지 않는 데이터

 - 초기화 이후 값을 변경할 수 없다

 - const 키워드로 선언

 

■ Example

const int a = 3;
const double b = 3.14;
const string c = "abc";

 

 

■ object :

- 모든 데이터 형식을 담을 수 있는 형식

- 모든 데이터 형식의 최상위

- 값 형식 데이터를 object로 변환되면 boxing

- object가 값 형식으로 변환되면 unboxing

 

■ 열거형 (Enumeration) :

- 같은 범주에 속하는 여러 개의 상수를 선언

- 상수 형식을 의미 있는 단어로 표현

 

■ Example

enum Color
{
    Red,
    Green,
    Blue,
    Yellow
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine($"{Color.Red}");
        Console.WriteLine($"{Color.Green}");
        Console.WriteLine($"{Color.Blue}");
        Console.WriteLine($"{Color.Yellow}");

        Console.WriteLine($"{(int)Color.Red}");
        Console.WriteLine($"{(int)Color.Green}");
        Console.WriteLine($"{(int)Color.Blue}");
        Console.WriteLine($"{(int)Color.Yellow}");
    }
}

 

Example 결과

■ var 형식 :

- 암시적 형식

- 변수에 담긴 데이터에 따라 컴파일러에 의해 자동으로 형식 지정

- 선언과 동시 초기화 필수

- 지역 변수로만 사용

 

■ Example

var a = 1;
var b = 3.14;
var c = "Example";

Console.WriteLine($"Type: {a.GetType()}, Value: {a}");
Console.WriteLine($"Type: {b.GetType()}, Value: {b}");
Console.WriteLine($"Type: {c.GetType()}, Value: {c}");

 

Example 결과