C#

c# 닷넷기초 상수 - 예약어 Const (상수는 값이 바뀌지 않는다)

따봉이 2022. 1. 14. 00:02
728x90
반응형

지난 시간에는 변수에 대해 알아보았는데 이번 시간에는 상수에 대해 알아보도록 하자.

 

이전 변수관련 내용은 아래 링크 참고

https://ttleader.tistory.com/125

 

C# 닷넷 기초 - 변수와 메모리의 이해1 : 변수 (스택stack, 힙heap 메모리) / 개발자 기술 면접에서

오늘은 변수와 함께 메모리에 대해서 정리를 해보려고 한다. 먼저 프로그래밍에 없어서는 안 될 가장 많이 쓰고 가장 기본적인 것 바로 변수! 다 변수는 말 그대로 변하는 값인 것이다. int age = 19

ttleader.tistory.com

 

상수란?

변수는 값이 바뀌고 정해지지 않은 값을 얘기했다. 반대로 상수(Constant)는 변하지 않는 값이다. 따라서 상수에 값이 한번 대입되면 이후 다른 값을 대입할 수 없는 것이 상수이고 이 상수 선언은 "Const" 라는 예약어를 사용하여 상수를 지정한다. 

const bool isReturn = false;
const int i = 5;
const string strText = "Hi~";

//아래 구문은 컴파일 시 오류가 발생한다. 상수는 처음 대입 후 변경불가이다.
isReturn = true;

 

위 처럼 상수는 최초 값 대입 후 다시 값을 대입할 수 없다. 그리고 컴파일러는 컴파일할 때 상수의 값이 어떤 값인지 정해져 있어야 한다. 왜냐하면 상수는 무조건 변경할 수 없는 값이 정해져 있어야하기 때문이다. 정해지지 않은 값을 상수에 대입하면 오류가 발생한다. 

 

// Mat.Max메서드를 통해 0과 9중 큰 값이 결정된다. 
// 프로그램이 실행되면서 i의 값이 9로 대입된다. 
int i = Math.Max(0, 9);

//오류가 발생함
//Math.Max 메서드를 통해 값이 나중에 결정되므로 미리 알 수 없는 값은 상수로 지정할 수 없다. 
const int Max_i = Math.Max(0,5);

Max_i에는 미리 결정된 값이 들어가도록 해야하고 결정되지 않은 값은 컴파일러가 알 수 없기때문에 오류가 발생한다. 

 

실제 상수에 미정된 값 대입시 아래 빨간색 오류 줄 생김

그렇다고 상수에 딱 정해진 단일값만 지정할 수 있는 것만은 아니다. 식으로도 상수를 지정할 수 있다. 조건은 식도 변하지 않는 정해진 식이어야 한다. 아래 예를 보자. 

 

//이런 식은 변하지 않고 미리 계산가능하므로 상수에 대입할 수 있다.
const int i = 100 / 2 + 3;

 

 

728x90
반응형