• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • [C++ 프로그래밍] 상수 표현식 (Constant Expressions)
    2024년 07월 10일
    • 유니얼
    • 작성자
    • 2024.07.10.:42
    728x90

    C++ 기초 프로그래밍: 상수 표현식 (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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바