반응형
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> using namespace std; int main(){ // 다양한 타입의 변수를 정의 int i = 65; float f = 66.89f; char c = 'C'; bool b = true; // 형변환에 사용할 변수들을 미리 정의 // (아래처럼 하는 것이 간결하고 좋다) int f2i, c2i, b2i; float i2f, c2f, b2f; char i2c, f2c, b2c; bool i2b, f2b, c2b; // int을 다른 타입으로 변환 i2f = i; // int에서 float로 형변환 i2c = i; // int에서 char로 형변환 i2b = i; // int에서 bool로 형변환 // float을 다른 타입으로 변환 f2i = f; // float를 int로 형변환 f2c = f; // float를 char로 형변환 f2b = f; // float를 bool로 형변환 // char을 다른 타입으로 변환 c2i = c; // char를 int로 형변환 c2f = c; // char를 float로 형변환 c2b = c; // char를 bool로 형변환 // bool을 다른 타입으로 변환 b2i = b; // bool을 int로 형변환 b2f = b; // bool을 float로 형변환 b2c = b; // bool을 char로 형변환 // 결과 출력 cout << "int : " << i << "\n\tto float : " << i2f << "\n\tto char : " << i2c << "\n\tto bool : " << i2b << "\n\n"; cout << "float : " << f << "\n\tto int : " << f2i << "\n\tto char : " << f2c << "\n\tto bool : " << f2b << "\n\n"; cout << "char : " << c << "\n\tto int : " << c2i << "\n\tto float : " << c2f << "\n\tto bool: " << c2b << "\n\n"; cout << "bool : " << b << "\n\tto int : " << b2i << "\n\tto float : " << b2f << "\n\tto char : " << b2c << "\n\n"; return 0; } | cs |
형 변환 시에 값이 변경되는 경우
- 실수 타입에서 정수 타입으로 형변환이 발생하는 경우에는 실수의 소수점 이하 부분이 잘리게 된다.(단, 반올림이 아님)
- 모든 타입에서 bool 타입으로 형변환할 때, 모든 0이 아닌 수는 true 즉 1로 바뀐다. 0은 그대로 0으로 남아 false의 의미를 가진다.
- 다른 타입에서 char 타입으로 형변환할 때는 값의 변화가 발생하지 않는다.(char 타입은 단순히 작은 크기의 정수 타입임)
문제가 발생하는 형변환
- 큰 타입의 변수에 담겨있던 값이 작은 타입의 변수에 담길 수 없을 만큼 크다면 물리적인 한계로 인하여 올바른 값이 출력되지 아니함
이런 경우에는 값의 일부가 잘려나가거나 예상할 수 없는 이상한 값으로 변질될 수 있다.
반응형
'공부 > 개발노트' 카테고리의 다른 글
[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 |
[C/C++] HELLO WORLD 출력을 ASCII code로 구현해보자 (0) | 2016.08.01 |