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


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