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