ted0505
Computational Art & Study
ted0505
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • Computer Science ( CS ) (0)
    • Computational Thinking (6)
    • 프로젝트 개발일지 (1)
    • Coding (52)
      • C++ (39)
      • JavaScript (2)
      • P5.JS (7)
      • Python (0)
      • HTML5 (1)
      • CSS (0)
    • Game Engine (18)
      • Unreal Engine 4 (18)
      • Unity (0)
    • Physically Based Rendering (0)
    • FilmMaking (0)
    • 잡다 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ted0505

Computational Art & Study

Coding/C++

[ C++ ] 02.08 상수 constants

2022. 1. 18. 16:05

상수

상수에는 두 가지가 있다. 리터럴(literal), 심볼릭(symbolic).

상수란 ?

상수는 변하지 않는 변수를 뜻한다.

  • 상수에 넣는 데이터는 수 이외에 클래스나 구조체와 같은 객체가 담길 수도 있다.

상수의 선언 

const 키워드, constexpr 키워드 두 가지를 사용하여 선언할 수 있다.

constexpr 키워드는 런타임이 아닌, 컴파일 타임에 상수가 완전히 결정되는 것을 문법상으로 정해주는 것이다.

때문에 런타임 중에는 사용시 주의해야한다.

상수의 예

int add(const int a, int b) { 	// 파라미터의 값을 상수로 선언한다.
	return a + b;
}

int main() {
	add(1, 2);
}

매개변수를 상수로 선언하는 경우다.

함수의 입력이 되는 매개변수는 함수내에서도 변할 일이 대부분 없고, 함수 내에서 파라미터의 값을 바꾸는 것은 함수의 입,출력을 명확하게 보여주지 못하는 측면이 존재하기 때문에 가급적 안쓴다.

이와 같은 상황을 방지하기 위해 파라미터에 const 키워드를 붙여 상수로 선언한다.


리터럴(literal)이란?

리터럴은 코드에 직접 삽입 된 값, 데이터 자체의 값을 뜻한다. 즉, 변수에 넣는 변하지 않는 값을 의미한다.

const c = 1;

위 코드에서는 c 가 상수이고, 1이 리터럴이다.

리터럴(literal) 상수 

숫자 리터럴에서는 데이터의 유형을 결정하는 접미사가 붙을 수 있다. 이러한 접미사는 선택사항이며, 넣지않을 경우 컴파일러가 데이터 유형을 유추한다. 

float f = 3.14;

위와 같은 float 타입은 접미사 f를 붙여주지 않았기 때문에, 컴파일러가 double 타입의 값을 형변환(캐스팅)하여 float 타입 변수에 정의한다.


심볼릭(symbolic) 상수

변수와 마찬가지로 이름을 가지고 있는 상수를 뜻한다.

 

매직넘버말고 심볼릭상수

int max = num * 30;	// 매직넘버 ( Magic Numbers )

매직넘버란 코드 중간에 하드 코딩된 리터럴을 뜻한다.

매직넘버는 좋지않는 습관이다. 몇명이 같이 개발할 경우, 어떤 값인지 헷갈리고 디버깅에도 불리하다.

그렇기 때문에 심볼릭 상수를 사용하자.

 

심볼릭 상수 선언 방법

1. 매크로

#define MAX_NUMBER 30;
int max = num * MAX_NUMBER

2. const, constexpr 키워드

const int max_number = 30;
int max = num * max_number;

정리

상수는 메모리 위치(공간)이며, 메모리 값을 변경할 수 없다.
리터럴은 메모리 위치(공간) 안에 저장되는 값이다.

 

'Coding > C++' 카테고리의 다른 글

[ C++ ] 비트 단위 연산자 Bitwise Operators  (0) 2022.01.24
[ C++ ] 논리 연산자 (Logical Operators)  (0) 2022.01.23
[ C++ ] 02.05 - 부동 소수점 숫자 ( floating point numbers )  (0) 2022.01.14
[ C++ ] Variable 과 Fundamental Data Type  (0) 2022.01.13
[ C++ ] namespace_명칭공간  (0) 2022.01.12
    'Coding/C++' 카테고리의 다른 글
    • [ C++ ] 비트 단위 연산자 Bitwise Operators
    • [ C++ ] 논리 연산자 (Logical Operators)
    • [ C++ ] 02.05 - 부동 소수점 숫자 ( floating point numbers )
    • [ C++ ] Variable 과 Fundamental Data Type
    ted0505
    ted0505

    티스토리툴바