다음을 통해 공유


컴파일러 경고(수준 3) C4738

32비트 float 결과를 메모리에 저장하면 성능이 저하될 수 있습니다.

C4738은 할당, 캐스트, 인수 전달 및 기타 연산의 결과를 반올림해야 함을 경고하거나, 연산에서 레지스터가 부족하여 메모리를 사용해야 했음(spilling)을 나타냅니다. 이로 인해 성능이 저하될 수 있습니다.

반올림하지 않으면서 이 경고를 해결하려면 /fp:fast로 컴파일하거나 float 대신 double을 사용합니다.

레지스터가 부족해지는 것을 피하면서 이 경고를 해결하려면 계산의 순서를 변경하고 인라이닝의 사용을 수정하십시오.

이 경고는 기본적으로 해제되어 있습니다. 자세한 내용은 기본적으로 해제되어 있는 컴파일러 경고를 참조하십시오.

예제

다음 샘플에서는 C4738 경고가 발생하는 경우를 보여 줍니다.

// C4738.cpp
// compile with: /c /fp:precise /O2 /W3
// processor: x86
#include <stdio.h>

#pragma warning(default : 4738)

float func(float f)
{
    return f;
}

int main()
{
    extern float f, f1, f2;
    double d = 0.0;

    f1 = func(d);
    f2 = (float) d;
    f = f1 + f2;   // C4738
    printf_s("%f\n", f);
}