본문 바로가기
C++ 200제/코딩 IT 정보

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

by vicddory 2018. 5. 26.

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 형변환 방법과 함수 (타입 캐스팅)

댓글