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