编译器警告(等级 3)C4738

在内存中存储 32 位浮点结果,可能降低性能

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);
}