다음을 통해 공유


컴파일러 경고(수준 1) C4305

'conversion': 'type1'에서 'type2'로 잘립니다.

설명

이 경고는 초기화에서 값이 더 작은 형식으로 변환되거나 생성자 인수로 변환되어 정보가 손실될 때 발생합니다.

예시

이 샘플에서는 다음 두 가지 방법으로 이 경고를 볼 수 있습니다.

// C4305.cpp
// Compile by using: cl /EHsc /W4 C4305.cpp

struct item
{
    item(float) {}
};

int main()
{
    float f = 2.71828;          // C4305 'initializing'
    item i(3.14159);            // C4305 'argument'
    return static_cast<int>(f);
}

이 문제를 해결하려면 올바른 형식의 값을 사용하여 초기화하거나 올바른 형식으로 명시적 캐스트를 사용합니다. 예를 들어 변수를 float 초기화 float 하거나 인수를 사용하는 생성자에 전달하려면 (부동 소수점 리터럴의 double 기본 형식) 대신 2.71828f와 같은 리터럴을 float 사용합니다.