티스토리 뷰

목차

    C++ C언어 int double 형변환 방법과 함수 (타입 캐스팅)


    Value Casting


    Introdution

    특정 데이터 타입으로 변수를 선언한 뒤, 재정의 과정을 거치지 않고 데이터 형변환을 할 수 있습니다. 굳이 또 다른 변수를 생성하지 않고 하나의 변수를 교체해 사용하는 것을 형변환(Cast, 캐스팅)라고 합니다.


    C언어 스타일

    기본적인 타입 캐스팅 형태는 아래와 같습니다.


    1
    (DataType)Expression
    cs


    위의 코드는 기본적인 형태로 괄호 안에 결과로 출력하고 싶은 데이터 타입을 기재합니다.

    일반적인 변수와 함께 상수도 타입 캐스팅이 가능합니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
    using namespace std;
     
    int main()
    {
        cout << "Number: " << (int)3.14159 << "\n";
     
        return 0;
    }
    cs


    위의 코드에서 캐스팅 대상은 Float형의 부동 소수점을 갖는 숫자이며, 괄호 안의 데이터 타입으로 형변환이 될 것입니다.


    아래는 그 결과입니다.


    1
    Number : 3
    cs


    c언어 캐스팅 자료형 변환[형변환으로 야한 농담 나누던 게 엊그제 같은데...]


    위에선 직접적인 값을 캐스팅(형변환)했지만, 먼저 그 값을 저장할 변수를 선언한 뒤 타입 캐스팅 작업을 완료할 수도 있습니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
    using namespace std;
     
    int main()
    {
        int number;
     
        number = (int)3.14159;
     
        cout << "Number: " << number << "\n";
     
        return 0;
    }
    cs


    수식 또한 연산의 결과가 될 수 있습니다.

    역시 괄호 안에 표현할 데이터 타입을 추가하고 이를 저장할 변수를 하나 선언해 사용합니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <iostream>
    using namespace std;
     
    int main()
    {
        double price = 258.85;
        int number;
     
        cout << "Price? $" << price << "\n";
     
        number = (int)price; 
        cout << "Number: " << number << "\n";
     
        return 0;
    }
    cs


    아래는 형변환 결과입니다.


    1
    Price? $258.85Number: 258
    cs


    c++ 자료형 변환 int double[() 괄호로 끝내지 마세요]


    C++ 스타일, 캐스팅 - DYNAMIC_DOWNCAST

    C++에서는 타입 캐스팅을 위한 다양한 키워드를 제공하는데, 여기서는 static_cast란 키워드를 사용합니다.


    1
    static_cast<DataType>(Expression)
    cs


    static_cast 키워드를 사용하려면, <, >, 괄호가 필요합니다.


    데이터 타입은 미리 제공되는 것을 사용해야하며, 결과값을 상수로 만들 수도 있습니다.


    아래 예제는 Float형을 int로 형변환하는 예입니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
    using namespace std;
     
    int main()
    {
        cout << "Number: " << static_cast<int>(3.14159<< "\n";
     
        return 0;
    }
    cs


    또한, 미리 선언한 변수에 결과 값을 저장할 수도 있습니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <iostream>
    using namespace std;
     
    int main()
    {
        int number = static_cast<int>(3.14159); 
        cout << "Number: " << number << "\n";
     
        return 0;
    }
    cs


    타입 캐스팅의 대상은 기존의 데이터도 해당이 됩니다.


    아래는 그 예입니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <iostream>
    using namespace std;
     
    int main()
    {
        double PI = 3.14159;
        int number;
     
        number = static_cast<int>(PI);
     
        cout << "PI = " << PI << endl;
        cout << "Number = " << number << "\n";
     
        return 0;
    }
    cs


    아래는 위의 소스 코드에 대한 결과입니다.


    1
    PI = 3.14159Number = 3
    cs


    C++ C언어 int double 형변환 방법과 함수 (타입 캐스팅)