반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <iostream> using namespace std; int main(){ // 정수 타입간의 형변환 int i = 131071; unsigned short i2us = i; // int에서 unsigned short로 형변환 short i2s = i; // int에서 short로 형변환 // 실수 타입간의 형변환 double d = 12345678901234.56789; float d2f = d; // double에서 float로 형변환 // 실수 타입에서 정수 타입으로 형변환 float f = 76543.21f; short f2s = f; // 정수타입에서 실수 타입으로 형변환 int big_i = 1234567890; float i2f = big_i; // int에서 float로 형변환 // 결과 출력 cout << fixed; cout << "int : " << i << "\n\tto unsigned short : " << i2us << "\n\tto short : " << i2s << "\n\n"; cout << "double : " << d << "\n\tto float : " << d2f << "\n\n"; cout << "float : " << f << "\n\tto short : " << f2s << "\n\n"; cout << "int : " << big_i << "\n\tto float : " << i2f << "\n\n"; return 0; } | cs |
05~08행 : 작은 크기의 정수 타입이 보관하기에는 너무 큰 수를 대입, 형변환시 이상한 값으로 변질
10~12행 : float 타입이 보관하기에는 정밀도가 높은 실수를 대입하고 있음. 형변환 시에 근사 값으로 변환. 근사 값으로의 변환도 불가능한 경우에는 이상한 값으로 변질될 수 있다.
14~16행 : 76543.21이 정수형으로 형변환되는 경우 76543이 되야한다. short 타입의 변수가 담기에는 너무 큰 수다. 그래서 형변환 시에 이상한 값으로 변질되었다.
18~20행 : 기본적으로 실수 타입은 정수 타입보다 큰 수를 보관할 수 있지만, 내부 구조상 정밀도를 잃어버릴 수도 있다.
23행 : cout 객체를 통해서 실수 값을 출력할 때 123E-3이 아닌 0.00123처럼 출력하게 만든다.
반응형
'공부 > 개발노트' 카테고리의 다른 글
[C/C++] 사칙연산 프로그래밍 (0) | 2016.08.13 |
---|---|
[C/C++] 명시적인 형변환 (0) | 2016.08.13 |
[C/C++] 형변환 이해하기 (0) | 2016.08.12 |
[C/C++] bool 타입 이해 (0) | 2016.08.12 |
[C/C++] 이스케이프의 활용 (0) | 2016.08.01 |