Programing/C++

[C++ 프로그래밍] 암시적 데이터 변환 (Implicit Data Conversions)

유니얼 2024. 7. 22. 23:15
728x90

C++ 기초 프로그래밍: 암시적 데이터 변환 (Implicit Data Conversions)

C++ 프로그래밍에서는 서로 다른 데이터 타입이 연산될 때 자동으로 타입 변환이 일어날 수 있습니다. 이를 암시적 변환(implicit conversion)이라고 하며, 보통 작은 범위의 타입이 큰 범위의 타입으로 변환됩니다. 이번 블로그 글에서는 암시적 데이터 변환이 어떻게 이루어지는지와 그 사용 예제를 살펴보겠습니다.

암시적 데이터 변환이란?

암시적 데이터 변환은 C++ 컴파일러가 서로 다른 타입 간의 연산을 처리할 때 자동으로 타입 변환을 적용하는 것을 말합니다. 이는 프로그램의 유연성을 높이고, 다양한 타입 간의 연산을 쉽게 수행할 수 있게 합니다. 예를 들어, int와 double 타입이 함께 사용될 때, int는 double로 변환되어 연산이 수행됩니다.

예제 코드

다음 예제 코드는 암시적 데이터 변환이 어떻게 이루어지는지를 보여줍니다:

#include <iostream>

int main() {
    // 컴파일러는 표현식에서 타입이 다를 때 암시적 변환을 적용함.
    // 이 경우 int는 double로 변환된 후 표현식이 평가됨.
    double price {45.6};
    int units {10};
    
    auto total_price = price * units; // units가 암시적으로 double로 변환됨
    
    std::cout << "Total price : " << total_price << std::endl;
    std::cout << "sizeof total_price : " << sizeof(total_price) << std::endl;

    // 암시적 변환이 할당에서 발생함
    // 할당 연산은 암시적 축소 변환을 야기함, y는 할당 전에 int로 변환됨
    int x;
    double y {45.44};
    x = y; // double이 int로 변환됨
    std::cout << "The value of x is : " << x << std::endl; // 45
    std::cout << "sizeof x : " << sizeof(x) << std::endl; // 4
    
    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

Total price : 456
sizeof total_price : 8
The value of x is : 45
sizeof x : 4

예제 분석

1, 암시적 변환이 연산에서 발생:

  • double price와 int units를 곱하는 연산에서 units는 자동으로 double 타입으로 변환됩니다. 따라서 total_price는 double 타입이 됩니다.
  • auto total_price = price * units;에서 units는 double로 변환되므로 total_price는 double 타입입니다.

2, 암시적 변환이 할당에서 발생:

  • double y를 int x에 할당할 때, y의 값은 int 타입으로 변환됩니다. 이때 소수점 이하의 값은 버려집니다.
  • x = y;에서 y의 값 45.44는 int 타입으로 변환되어 45가 됩니다.

결론

C++에서는 암시적 데이터 변환을 통해 서로 다른 데이터 타입 간의 연산을 쉽게 수행할 수 있습니다. 암시적 변환은 작은 범위의 타입을 큰 범위의 타입으로 변환하거나, 반대로 큰 범위의 타입을 작은 범위의 타입으로 변환할 때 발생합니다. 이러한 변환은 코드의 유연성을 높이고, 다양한 데이터 타입을 효율적으로 처리할 수 있게 합니다. 그러나 암시적 변환이 언제 일어나는지, 그리고 그 결과가 무엇인지 이해하는 것은 중요합니다. 이를 통해 예기치 않은 결과를 방지하고, 코드의 정확성과 안정성을 유지할 수 있습니다.

반응형