묵시적 변환이란 비쥬얼스튜디오에서
예를 들어 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;
}
제가 간단한 예제를 들구왔지만, 그래도 여러분들이 직접 해보시고 다른 코드들도 봐보셔야합니다!!!
자 그럼 요만~~~ 씨~~~유~~~
'지식창고 > 프로그래밍' 카테고리의 다른 글
(C++)디폴트 생성자란? (0) | 2019.07.24 |
---|---|
(C++)클래스의 깊은 복사란? (0) | 2019.07.18 |
(C++)클래스의 정보은닉이란? (0) | 2019.07.15 |
(C++)클래스의 private의 사용방법과 접근 방법 (0) | 2019.07.14 |
(C++)this포인터란? (0) | 2019.07.09 |