본문 바로가기

지식창고/프로그래밍

(C++)묵시적 변환이란?

반응형

묵시적 변환이란 비쥬얼스튜디오에서

예를 들어 int형 변수 num1 10으로 초기화하고double형 변수 num2 2.0으로 초기화 하였다고 가정을 한다면, 

결과는 어떻게 될 것이라고 생각하시나욤? 

결과는 어렵지 않게, 답이 나올거라 생각됩니다.

 

이번에도 간단한 예제소스를 들구 왔습니담!

 

예제 소스는 클래스를 사용하여 묵시적변환을 설명하기보다는 c에서 사용할 때 형변환을

응용하여 설명하는 것이 받아들이기 쉬울 것 같아 c의 형변환을 예로 삼은 것입니다.

 

c++을 공부하면서 묵시적변환의 개념을 잡는데 도움을 주기 위함일 뿐 아래 예제가

클래스의 묵시적변환을 100프로 예를 들어 100프로 설명을 한 것은 아니라고 말하고 싶으며,

이 예제를 보고 감을 잡아 자신이 직접 해보기를 권유하고 싶네요-

 

#include <iostream>

 

 

using namespace std;

 

 

int main(void)

{

                  int num1 = 6;

                  double num2 = 2.0;

 

 

                  cout << num1 * num2 << endl;

 

 

                  cout << num1 / num2 << endl;

 

 

                  return 0;

}

 

라고 코딩을 하였을 때 결과 값은 20 5가 나옵니다.

이렇게 보았을 때 당연하다고 생각 할 수 있지만, 프로그램코딩에 있어서 double형으로 

2.0을 선언한 이유는 소수점까지의 정보를 원해서 하지 않은 것일까라고 생각해 볼 수 있지 않을까 합니다 ㅎ.

 

그렇기 때문에 위의 코딩을 아래와 같이 아주 살~~~짝 변화를 주면 결과값은 달라짐을 볼 수가 있습니다.

 

#include <iostream>

 

 

using namespace std;

 

 

int main(void)

{

                  int num1 = 6;

                  double num2 = 2.0;

 

 

                  num1 = num1 / num2;

//warning C4244: '=' : 'double'에서 'int'() 변환하면서 데이터가 손실될 

//있습니다.num1 = num1 / num2; 부분에서 warning 체크되지만 구동되는 것을  

//있을 것이다.이것이 바로 double형을 int형으로 묵시적으로 형을 변환 시켜

//결과값을 출력해준다는 것이다.

                  num2 = num1 / num2;

 

 

                  cout << "num1 = num1 / num2 : " << num1 << endl;

                  cout << "num2 = num1 / num2 : " << num2 << endl;

 

 

                  return 0;

}

 

제가 간단한 예제를 들구왔지만, 그래도 여러분들이 직접 해보시고 다른 코드들도 봐보셔야합니다!!!

 

자 그럼 요만~~~ 씨~~~유~~~

반응형