Compartir vía


Advertencia del compilador (nivel 3) C4738

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

C4738 advierte de que el resultado de una asignación, conversión, argumento pasado u otra operación puede necesitar redondear, o bien que la operación se ha quedado sin registros y es necesario usar memoria (volcado). Esto puede provocar una pérdida de rendimiento.

Para resolver esta advertencia y evitar el redondeo, compile con /fp:fast o use double en lugar de float.

Para resolver esta advertencia y evitar quedarse sin registros, cambie el orden de cálculo y modifique el uso de la inserción.

De forma predeterminada, esta advertencia está desactivada. Para obtener más información, consulte Compiler Warnings That Are Off by Default.

Ejemplo

En el ejemplo siguiente se genera 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);
}