상수 (프로그래밍) 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
 
'''상수'''(constant)는 [[프로그래밍 언어]]에서 프로그램이 실행되는 동안 '값이 고정되어 변경할 수 없는 메모리 공간'을 의미한다.
 
'''상수'''(constant)는 [[프로그래밍 언어]]에서 프로그램이 실행되는 동안 '값이 고정되어 변경할 수 없는 메모리 공간'을 의미한다.
  
== 개요 ==
+
= 개요 =
 
상수(constant)란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미한다.
 
상수(constant)란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미한다.
 
하지만 상수가 변수와 다른 점은 프로그램이 실행되는 동안 상수에 저장된 데이터는 변경할 수 없다는 점이다.
 
하지만 상수가 변수와 다른 점은 프로그램이 실행되는 동안 상수에 저장된 데이터는 변경할 수 없다는 점이다.
 
이러한 상수는 표현 방식에 따라 리터럴 상수(literal constant), 심볼릭 상수(symbolic constant)로 나눌 수 있다.<ref name='const_synopsis'>TCPSchool, 〈[http://tcpschool.com/c/c_datatype_constant 상수 ]〉</ref>
 
이러한 상수는 표현 방식에 따라 리터럴 상수(literal constant), 심볼릭 상수(symbolic constant)로 나눌 수 있다.<ref name='const_synopsis'>TCPSchool, 〈[http://tcpschool.com/c/c_datatype_constant 상수 ]〉</ref>
  
== 상수의 종류 ==
+
= 상수의 종류 =
=== 리터럴 상수 ===
+
== 리터럴 상수 ==
* '''리터럴 상수(literal constant)''' : 이름이 따로 정의되지 않은 상수를 말한다. 리터럴 상수는 변수와는 달리 데이터가 저장된 메모리 공간을 가리키는 이름을 가지고 있지 않는다.
+
* '''리터럴 상수(literal constant)''' : 리터럴 상수는 변수와는 달리 데이터가 저장된 메모리 공간을 가리키는 이름을 가지고 있지 않는다.
 
 C 언어에서는 적절한 메모리 공간을 할당받기 위하여, 기본적으로 변수든 상수든 타입을 가지게 된다.<br>
 
 C 언어에서는 적절한 메모리 공간을 할당받기 위하여, 기본적으로 변수든 상수든 타입을 가지게 된다.<br>
 
 리터럴 상수는 타입에 따라 '''정수형 리터럴 상수''', '''실수형 리터럴 상수''' 등으로 구분할 수 있다.<br><ref name='const_synopsis'></ref>
 
 리터럴 상수는 타입에 따라 '''정수형 리터럴 상수''', '''실수형 리터럴 상수''' 등으로 구분할 수 있다.<br><ref name='const_synopsis'></ref>
==== 정수형 리터럴 상수 ====
+
=== 정수형 리터럴 상수 ===
 
정수형 리터럴 상수는 123, -456과 같이 아라비아 숫자와 부호로 직접 표현된다.<br>
 
정수형 리터럴 상수는 123, -456과 같이 아라비아 숫자와 부호로 직접 표현된다.<br>
 
C++에서는 정수형 상수를 10진수뿐만 아니라 8진수(0으로 시작)나 16진수(0x로 시작)로도 표현할 수 있다.<br>
 
C++에서는 정수형 상수를 10진수뿐만 아니라 8진수(0으로 시작)나 16진수(0x로 시작)로도 표현할 수 있다.<br>
 
이렇게 여러 가지 진법으로 표현된 정수형 상수의 출력을 위해 cout 객체는 dec, hex, oct 조정자를 제공하고 있다.<br>
 
이렇게 여러 가지 진법으로 표현된 정수형 상수의 출력을 위해 cout 객체는 dec, hex, oct 조정자를 제공하고 있다.<br>
 
이 세 가지 조정자를 cout 객체에 전달하면 사용자가 다시 변경하기 전까지 출력되는 진법의 형태를 계속 유지할 수 있다.<br>
 
이 세 가지 조정자를 cout 객체에 전달하면 사용자가 다시 변경하기 전까지 출력되는 진법의 형태를 계속 유지할 수 있다.<br>
===== 정수형 리터럴 상수의 타입 =====
+
==== 정수형 리터럴 상수의 타입 ====
 
C++에서 정수형 리터럴 상수는 다음과 같은 경우를 제외하면 모두 int형으로 저장된다.<br>
 
C++에서 정수형 리터럴 상수는 다음과 같은 경우를 제외하면 모두 int형으로 저장된다.<br>
 
1. 데이터의 값이 너무 커서 int형으로 저장할 수 없는 경우<br>
 
1. 데이터의 값이 너무 커서 int형으로 저장할 수 없는 경우<br>
42번째 줄: 42번째 줄:
 
|align=center|unsigned long long형 (C++11부터 제공)
 
|align=center|unsigned long long형 (C++11부터 제공)
 
|} <ref name='const_synopsis2'></ref>
 
|} <ref name='const_synopsis2'></ref>
 
+
=== 실수형 리터럴 상수 ===
==== 실수형 리터럴 상수 ====
 
 
C++에서 실수형 리터럴 상수는 모두 부동 소수점 방식으로 저장된다.<br>
 
C++에서 실수형 리터럴 상수는 모두 부동 소수점 방식으로 저장된다.<br>
 
이러한 실수형 리터럴 상수는 모두 double형으로 저장되며, 접미사를 추가하여 저장되는 타입을 직접 명시할 수도 있다.
 
이러한 실수형 리터럴 상수는 모두 double형으로 저장되며, 접미사를 추가하여 저장되는 타입을 직접 명시할 수도 있다.
===== 실수형 리터럴 상수의 타입 =====
+
==== 실수형 리터럴 상수의 타입 ====
 
다음 표는 C++에서 접미사를 추가하여 나타낼 수 있는 실수형 타입을 나타낸다.<br>
 
다음 표는 C++에서 접미사를 추가하여 나타낼 수 있는 실수형 타입을 나타낸다.<br>
 
:{|class=wikitable width=700 style="background-color:white"
 
:{|class=wikitable width=700 style="background-color:white"
62번째 줄: 61번째 줄:
 
|align=center|long double형
 
|align=center|long double형
 
|} <ref name='const_synopsis2'></ref>
 
|} <ref name='const_synopsis2'></ref>
 
+
=== 포인터 리터럴 상수 ===
==== 포인터 리터럴 상수 ====
 
 
널 포인터(null pointer)란 아무것도 가리키고 있지 않은 포인터를 의미하는데, 지금까지 C++에서는 널 포인터를 표현하기 위해서 포인터를 0으로 초기화해 왔다.
 
널 포인터(null pointer)란 아무것도 가리키고 있지 않은 포인터를 의미하는데, 지금까지 C++에서는 널 포인터를 표현하기 위해서 포인터를 0으로 초기화해 왔다.
 
하지만 C++11부터는 nullptr 키워드를 제공함으로써 0으로 초기화된 널 포인터보다 더욱 제대로 널 포인터를 표현할 수 있게 되었다.
 
하지만 C++11부터는 nullptr 키워드를 제공함으로써 0으로 초기화된 널 포인터보다 더욱 제대로 널 포인터를 표현할 수 있게 되었다.
70번째 줄: 68번째 줄:
 
하지만 nullptr 리터럴 상수를 사용하는 것이 좀 더 안전한 프로그램을 만들 수 있다.<ref name='const_synopsis2'></ref>
 
하지만 nullptr 리터럴 상수를 사용하는 것이 좀 더 안전한 프로그램을 만들 수 있다.<ref name='const_synopsis2'></ref>
  
=== 심볼릭 상수 ===
+
== 심볼릭 상수 ==
 
* '''심볼릭 상수(symbolic constant)''' : 심볼릭 상수는 변수와 마찬가지로 이름을 가지고 있는 상수이다.
 
* '''심볼릭 상수(symbolic constant)''' : 심볼릭 상수는 변수와 마찬가지로 이름을 가지고 있는 상수이다.
 
 이러한 심볼릭 상수는 반드시 선언과 동시에 초기화되어야 한다.
 
 이러한 심볼릭 상수는 반드시 선언과 동시에 초기화되어야 한다.
84번째 줄: 82번째 줄:
 
 3. 해당 심볼릭 상수를 특정 함수나 파일에서만 사용할 수 있도록 제한할 수 있다.<br><ref name='const_synopsis2'></ref>
 
 3. 해당 심볼릭 상수를 특정 함수나 파일에서만 사용할 수 있도록 제한할 수 있다.<br><ref name='const_synopsis2'></ref>
  
== C 언어에서 상수 정의 ==
+
= 자바 언어에서의 상수 활용 =
=== define 전처리기를 사용하는 방법 ===
+
== static final ==
  #define identifier value
+
자바 프로그래밍에서 상수 선언을 할 때 원래 [[final]]이 사용된다.<br>
 
 
define으로 전처리기 지시자를 통해 상수를 정의할 수 있다.<br>
 
이렇게 정의된 상수는 전처리 단계에서 value로 치환된 이후 컴파일된다.<br><ref name='const_ex'>Peter, 〈[https://gracefulprograming.tistory.com/43 자바의 final 상수 ]〉, 2017년 1월 26일</ref>
 
 
 
  #include <stdio.h>
 
  #define LENGTH 10
 
  #define WIDTH 5
 
  #define NEWLINE '\n'
 
 
 
  int main() {
 
   int area;
 
 
 
   area = LENGTH * WIDTH;
 
   printf("value of area : %d", area);
 
   printf("%c", NEWLINE);
 
 
 
   return 0;
 
 
 
  }<ref name='const_ex'></ref>
 
 
 
=== const 키워드를 사용하는 방법 ===
 
const 키워드를 통해 변수를 선언할 때 상수로 지정할 수 있다.<br><ref name='const_ex'></ref>
 
 
 
  const type variable = value;
 
 
 
이렇게 선언된 변수는 값을 변경할 수 없다<br>
 
실제로 참조할 때는 define을 사용할 때와 차이가 없다.<br>
 
 
 
  #include <stdio.h>
 
 
 
  int main() {
 
   const int LENGTH = 10;
 
   const int WIDTH = 5;
 
   const char NEWLINE = '\n';
 
   int area; area = LENGTH * WIDTH;
 
 
 
  printf("value of area : %d", area);
 
  printf("%c", NEWLINE);
 
  return 0;
 
  }<ref name='const_ex'></ref>
 
 
 
== 자바 언어에서의 상수 활용 ==
 
=== static final ===
 
자바 프로그래밍에서 상수 선언을 할 때 원래 final([[파이널]])이 사용된다.<br>
 
 
 하지만 관례상 final이 아닌 static final로 선언하는데, 이 경우 static final 변수는 클래스가 로딩되어있는 동안 그 상수 값을 변경할 수 없다.<br>
 
 하지만 관례상 final이 아닌 static final로 선언하는데, 이 경우 static final 변수는 클래스가 로딩되어있는 동안 그 상수 값을 변경할 수 없다.<br>
 
 자바로 프로젝트를 진행할때 여러 파일에서 공유해야하는 final 변수는 public static final로 선언하여 사용하면 좋다.<ref name='java_ex'>나다움, 〈[https://life-with-coding.tistory.com/274 자바의 final 상수 ]〉, 2020년 3월 29일</ref>
 
 자바로 프로젝트를 진행할때 여러 파일에서 공유해야하는 final 변수는 public static final로 선언하여 사용하면 좋다.<ref name='java_ex'>나다움, 〈[https://life-with-coding.tistory.com/274 자바의 final 상수 ]〉, 2020년 3월 29일</ref>
 
+
=== 예시 ===
==== 예시 ====
 
 
   public class DefineMath {
 
   public class DefineMath {
 
    
 
    
142번째 줄: 95번째 줄:
 
  
 
  
 
   }<ref name='java_ex'></ref>
 
   }<ref name='java_ex'></ref>
 +
 +
= 참고 =
  
 
{{각주}}
 
{{각주}}
  
 
== 참고자료 ==
 
== 참고자료 ==
* TCPSchool, 〈[http://tcpschool.com/c/c_datatype_constant 상수 ]〉
+
* TCPSchool, 〈[http://tcpschool.com/c/c_datatype_constant 상수 ]〉</ref>
* TCPSchool, 〈[http://tcpschool.com/cpp/cpp_datatype_constant 상수 ]〉
 
* 나다움, 〈[https://life-with-coding.tistory.com/274 자바의 final 상수 ]〉, 2020년 3월 29일
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==
* [[상수]]
 
* [[프로그래밍]]
 
* [[객체지향 프로그래밍]]
 
 
* [[C언어]]
 
* [[C언어]]
* [[자바]]
 
* [[변수]]
 
* [[기본형변수]]
 
  
 
{{프로그래밍|검토 필요}}
 
{{프로그래밍|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)