Aviso do compilador (nível 3) C4738
armazenando o resultado float de 32 bits na memória, possível perda de desempenho
O C4738 adverte que o resultado de uma atribuição, conversão, argumento passado ou outra operação pode precisar ser arredondado, ou que a operação ficou sem registros e precisou usar memória (despejo). Isso pode resultar na perda de desempenho.
Para resolver esse aviso e evitar arredondamento, compile com /fp:fast ou use double
em vez de float
.
Para resolver esse aviso e evitar ficar sem registros, altere a ordem de computação e modifique o uso de inlining
Esse aviso está desativado por padrão. Para obter mais informações, confira Avisos do compilador desativados por padrão.
Exemplo
A seguinte amostra 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);
}