형변환시 고려사항
큰 자료형에서 작은 자료형으로 형변환을 할 경우 일부가 잘려나갈 수 있다.
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { float number1 = 55.55; int number2 = (int)number1; bool number3 = (bool)number1; cout << number2 << "\n"; return 0; }
포스트 링크 <[C++ 정리] 자료형의 크기 및 범위>에 따라 55.55는 각각 55(int), 1(bool)이 출력된다.
명시적 형변환
float number1 = 55.55; int number2 = (int)number1; bool number3 = (bool)number1;
변환할 자료형을 명시((int))해준다.
묵시적 형변환
float number1 = 55.55; int number2 = number1; bool number3 = number1;
그냥 대입한다.
명시적 형변환과 묵시적 형변환의 차이점
* 결과적인 차이는 없다 * 명시적 형변환의 경우 내부적으로 임시변수를 생성에 대입하는 방식으로 성능 저하를 일으킬 수 있다. * 묵시적 형변환의 경우 데이터 손실에 대한 경고가 발생한다.