Предупреждение компилятора (уровень 3) C4738
сохранение 32-разрядного результата типа float в памяти, возможна потеря производительности
Предупреждение C4738 свидетельствует о том, что результат присваивания, приведения, передачи аргумента или другой операции, возможно, следует округлить, или же что для выполнения операции не хватило регистров, и для нее потребовалось использование памяти. Это может привести к потере производительности.
Чтобы устранить это предупреждение и обойтись без округления, следует выполнить компиляцию с параметром /fp:fast или использовать тип double вместо float.
Чтобы устранить это предупреждение и исключить ситуацию нехватки регистров, следует изменить порядок компиляции и изменить применение подстановки.
Данное предупреждение по умолчанию отключено. Дополнительные сведения см. в разделе Отключенные по умолчанию предупреждения компилятора.
Пример
Следующий пример приводит к возникновению предупреждения 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);
}