コンパイラの警告 (レベル 3) C4738

メモリに 32 ビットの浮動結果を格納します。パフォーマンスが低下する可能性があります

C4738 は、代入、キャスト、引数渡し、またはその他の操作の結果を丸める必要があること、または、操作がレジスタを使い果たしたためメモリを使用する必要があること (スピル) を警告します。 これにより、パフォーマンスが低下する可能性があります。

この警告を解決して丸めを回避するには、/fp:fast を使用してコンパイルするか、float の代わりに double を使用します。

この警告を解決し、レジスタの枯渇を回避するには、計算の順序を変更したり、インライン化の使用を変更したりします

既定では、この警告はオフに設定されています。 詳細については、「 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);
}