Freigeben über


Compilerwarnung (Ebene 3) C4738

Das 32-Bit-Gleitkommaergebnis wird im Speicher gespeichert. Möglicherweise kommt es zu einem Leistungsverlust

C4738 warnt, dass das Ergebnis einer Zuordnung, eines Casts, eines übergebenen Arguments oder eines anderen Vorgangs gerundet werden muss oder dass der Vorgang nicht mehr registriert ist und Arbeitsspeicher (Überlauf) verwendet werden muss. Dies kann zu Leistungsverlusten führen.

Um diese Warnung zu beheben und das Runden zu vermeiden, kompilieren Sie mit /fp:fast oder verwenden Sie double anstelle von float.

Um diese Warnung zu beheben und zu vermeiden, dass keine Register mehr vorhanden sind, ändern Sie die Reihenfolge der Berechnung, und ändern Sie die Verwendung der Inliningfunktion.

Diese Warnung ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter Compiler Warnings That Are Off by Default.

Beispiel

Im folgenden Beispiel wird C4738 generiert:

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