ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자동 캐스팅, 변수 유효범위, 타입 변환
    프로그래밍 언어/C++ 2024. 6. 21. 03:42
    자동 캐스팅(타입변환), 변수 생존 범위

    자동 캐스팅

    • int 와 float/double이 계산 될 경우, 더 큰 데이터 자료형으로 자동 캐스팅 된다.
    • 하지만, 컴파일에게 자동으로 맡기는 것이아닌, 직접 추가해줄 수 있는 방법이 있다.
    int main(void)
    {
    	int a = 1;
        float b = 2.2f;
        int result;
        
        
        result = a + b; // a가 1.0 으로 자동 캐스팅됨
        
        result = (float)a + b; // 직접 (float)을 통해 캐스팅해줄 수 있다
        
    }
    • 자동 캐스팅의 경우 의도치 않은 결과값이 나올 수 있기에, 캐스팅 해주는 것이 바람직하다 (* 의도치 않은 코드는 버그를 일으킴)

     

    변수 생존 범위

    • 중괄호 (for문, 함수(main(), 일반함수() .. ), 그냥 중괄호 ... )
      • 해당 중괄호 안에서 선언된 경우, 해당 중괄호 안에서만 유효하다
      • for (int i =0; i < 10; ++i) {} => 이후 과정에서는 int i 는 존재하지 않는다.
    • 지역변수
      • 해당 지역에 한해, 변수 생존이 가능함 (중괄호와 연관된 의미)
    • 전역변수
      • 프로그램이 실행하는 동안에는 계속해서 유효하다
    • 정적 지역 변수
      • 함수 내에서 static 으로 선언된 변수로, 해당 함수가 호출할 때 초기화 되고, 함수가 끝나도 변수가 유지된다.
    • 클래스 멤버변수
      • 클래스 인스턴스가 유효할 때까지 존재

     

    #include <iostream>
    
    int global_ = 10; // 프로그램 종료시까지 유지
    
    void Test()
    {
    	int b = 10;
    } // b 소멸
    
    voit staticTest()
    {
    	static int num = 10; // 함수 호출시 생성
    } // num 유지
    
    
    class Myclass
    {
    
    public:
    	int memberValue = 10;
    
    };
    
    int main()
    {
    	Test();
        staticTest();
        
        for (int i =0; i < 10; ++i)
        { ... } // i 소멸
        
        
        Myclass *instance = new Myclass();
        
        ...
        
        delete instance; // memberValue 소멸
        
        
        //static -> num 과 global_ 제외 소멸
        
    	
    
    
    
    }

     

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

    Define( + inline , constexpr)  (0) 2024.06.21
    조건문과 반복문  (0) 2024.06.21
    메모리 구조 및 const  (0) 2024.06.21
    비트연산  (0) 2024.06.21
    연산 (산술, 사칙, 증감, 비교, 논리)  (0) 2024.06.21
Designed by Tistory.