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

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

C4738은 할당, 캐스트, 전달된 인수 또는 기타 작업의 결과를 반올림해야 하거나 작업이 레지스터가 부족하여 메모리(분산)를 사용해야 한다고 경고합니다. 이로 인해 성능이 저하될 수 있습니다.

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

이 경고를 해결하고 레지스터가 부족하지 않도록 하려면 계산 순서를 변경하고 인라인 사용을 수정합니다.

기본적으로 이 경고는 해제되어 있습니다. 자세한 내용은 Compiler Warnings That Are Off by Default을 참조하세요.

예시

다음 샘플에서는 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);
}