Compartir a través de


Advertencia del compilador (nivel 3) C4738

almacenando el resultado flotante de 32 bits en memoria; posible pérdida de rendimiento

C4738 advierte que es posible que haya que redondear el resultado de una asignación, conversión, argumento pasado u otra operación, o que la operación se quede sin registros y tenga que utilizar la memoria (spilling). Esto puede ocasionar una pérdida de rendimiento.

Para resolver esta advertencia y evitar el redondeo, compile con /fp:fast o utilice doubles en lugar de floats.

Para resolver esta advertencia y no quedarse sin registros, cambie el orden de cálculo y modifique el uso de procesos en línea

De forma predeterminada, esta advertencia está desactivada. Para obtener más información, vea Advertencias del compilador desactivadas de forma predeterminada.

Ejemplo

El código siguiente genera el error 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);
}