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