본문 바로가기
C#

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

by 따봉이 2022. 1. 14.
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
반응형

댓글