C4738 de aviso (nível 3) do compilador
armazenando o resultado de ponto flutuante de 32 bits na memória, a possível perda de desempenho
C4738 avisa que o resultado de uma atribuição, converter, passou um argumento ou outra operação talvez precise ser arredondados ou que a operação ficou sem registradores e necessários para usar a memória (derramada).Isso pode resultar em perda de desempenho.
Para resolver esse aviso e evitar o arredondamento, compilar com /fp:fast ou use doubles em vez de floats.
Para resolver esse aviso e evitar o fim do registradores, alterar a ordem de cálculo e modificar o seu uso do inlining
Este aviso está desativado por padrão.Para obter mais informações, consulte Compilador avisos que está desativado por padrão.
Exemplo
O exemplo a seguir gera 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);
}