-
[C++ 프로그래밍] 상수 표현식 (Constant Expressions)2024년 07월 10일
- 유니얼
-
작성자
-
2024.07.10.:42
728x90C++ 기초 프로그래밍: 상수 표현식 (Constant Expressions)
C++에서 상수 표현식(constant expressions)은 컴파일 타임에 계산되는 상수 값을 의미합니다. 이러한 상수 표현식은 프로그램의 성능을 최적화하고 코드의 안전성을 높이는 데 중요한 역할을 합니다. 이번 블로그 글에서는 C++에서 상수 표현식을 선언하고 사용하는 방법에 대해 알아보겠습니다.
constexpr 키워드
C++11부터 도입된 constexpr 키워드는 상수 표현식을 정의하는 데 사용됩니다. constexpr로 선언된 변수는 컴파일 타임에 값을 계산하며, 이를 통해 컴파일 타임 상수를 사용할 수 있습니다. 이러한 상수는 프로그램의 성능을 최적화하는 데 도움을 줍니다.
예제 코드
다음 예제 코드는 constexpr 키워드를 사용하여 상수 표현식을 정의하고 사용하는 방법을 보여줍니다:
#include <iostream> int main(){ constexpr int SOME_LIB_MAJOR_VERSION {1237}; constexpr int eye_count {2}; constexpr double PI {3.14}; // eye_count = 4; // 컴파일 오류: constexpr 변수는 변경할 수 없음 std::cout << "eye count : " << eye_count << std::endl; std::cout << "PI : " << PI << std::endl; // int leg_count {2}; // constexpr 변수는 런타임에 결정되는 값을 가질 수 없음 // constexpr int arm_count{leg_count}; // 컴파일 오류 constexpr int room_count {10}; constexpr int door_count {room_count}; // OK: room_count는 컴파일 타임 상수 const int table_count {5}; constexpr int chair_count { table_count * 5 }; // OK: table_count는 const 변수 // static_assert( SOME_LIB_MAJOR_VERSION == 123); // 컴파일 오류: 조건이 거짓 // int age = 5; // static_assert( age == 5); // 컴파일 오류: age는 런타임 변수 std::cout << "App doing its thing..." << std::endl; return 0; }
출력 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
eye count : 2 PI : 3.14 App doing its thing...
예제 분석
constexpr 변수 선언:
- constexpr int SOME_LIB_MAJOR_VERSION {1237};는 라이브러리의 주요 버전을 나타내는 상수 표현식입니다.
- constexpr int eye_count {2};와 constexpr double PI {3.14};는 각각 눈의 개수와 원주율을 나타내는 상수 표현식입니다.
컴파일 타임 상수 사용:
- constexpr로 선언된 변수는 컴파일 타임에 값을 계산하며, 이를 사용하여 다른 constexpr 변수를 초기화할 수 있습니다.
- 예를 들어, constexpr int room_count {10};와 constexpr int door_count {room_count};는 모두 컴파일 타임 상수입니다.
상수와 constexpr 변수의 차이:
- const int table_count {5};는 상수 변수로, 런타임에 값이 결정될 수 있습니다.
- constexpr int chair_count { table_count * 5 };는 컴파일 타임 상수로, table_count의 값을 사용하여 계산됩니다.
static_assert:
- static_assert는 컴파일 타임에 조건을 검사하는 데 사용됩니다. 조건이 거짓이면 컴파일 오류를 발생시킵니다.
- 주석 처리된 static_assert( SOME_LIB_MAJOR_VERSION == 123);는 조건이 거짓이므로 컴파일 오류를 발생시킵니다.
결론
C++에서 상수 표현식은 컴파일 타임에 값을 계산하여 프로그램의 성능을 최적화하고 코드의 안전성을 높이는 데 중요한 역할을 합니다. constexpr 키워드를 사용하여 상수 표현식을 정의할 수 있으며, 이를 통해 컴파일 타임 상수를 사용할 수 있습니다.
반응형다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드
받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이
감지되어도 모달 창이 표시되지 않습니다.)