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);
}