Поделиться через


Предупреждение компилятора (уровень 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);
}