본문 바로가기

프로그래밍/C ++

[C++] 자료형 (묵시적형변환)

변수의 사용 영역

int a; // 비지역변수 - 선언된 이후 프로그램 전체 영역에서 사용 가능
static int b{10}; // 비지역변수 - 선언된 이후 소속 파일의 전체 영역에서 사용 가능
int f() {
	int c{20}, d{30}; // 비지역변수  선언된 이후 소속 블록의 전체 영역에서 사용 가능
    {
    int d{40};
    int e{50}; // 지역변수 - 선언된 이후 소속 블록의 전체 영역에서 사용 가능
    }
}

 

const 한정어

  • 변수의 값을 수정할 수 없게 함
  • 초기화를 통해서만 값을 정할 수 있음
    • 컴파일 시에 값을 알 수 없으면 오류 발생함

constexpr 한정어

  • 값을 컴파일할 때 평가한다
  • 실행 중 값을 평가하는 것에 비해 효율적으로 동작할 수 있게 함
    • 모든 인수가 constexpr인 경우 컴파일 할 때 값을 구할 수 있다.
constexpr int fac(int n){
	return n > 1 ? n * fac(n-1) : 1;
}

void f(int x) {
	constexpr int a = fac(4); // 컴파일할 때 계산
    int b = fac(x); // 실행 중 계산
    ....
}

 

변수의 유효기간

  • 변수가 언제 만들어져 언제 없어지는가?
    • 자동변수 : 함수가 시작/종료될 때 생성/소멸된다.
      • 지역변수
    • 정적변수: 프로그램이 시작/종료될 때 생성/소멸된다.
      • 전역변수, 정적 지역변수(static)

 

자료형의 변환

묵시적 형 변환

  • 두 값 사이의 연산에서 우선순위가 낮은 자료형의 값이 순위가 높은 자료형의 값과 같은 형으로 변환된다.
  • 대입 연산자(=)는 값을 저장할 변수의 자료형으로 묵시적 형변환을 한다.
    • 오차나 오버플로 주의
  • 형 변환 연산자
    • static_cast : 연관된 자료형 간의 형변환을 처리하며, 변환 처리는 컴파일 단계에서 정해진다.
    • dynamic_cast : 기초 클래스와 파생 클래스 간의 포인터 또는 참조 형 변환이 프로그램 실행 중에 일어나도록 한다.
    • reinterpret_cast : 관련이 없는 자료형 사이의 변환을 처리하는 연산자.
    • const_cast : const 지정을 일시 해제한다.
static_cast<int>(n/10.0)
//형변환연산자 <변환하고자_하는_목표_자료형>(수식)
반응형

'프로그래밍 > C ++' 카테고리의 다른 글

[C++] 객체 (object)  (0) 2024.12.04
[C++] 함수  (0) 2024.12.03
[c++] C++ 변수의 특징  (0) 2024.07.08
[C++] iosteam 표준 입출력  (0) 2024.07.08
[c++] std namespace / header file  (0) 2024.07.04