Ich habe ein
Problem mit der Zuweisung von Werten für doppelte Variablen beim Übertreten (F10) meinen Code erlebt. Dies geschah nur, als ich Schritt für Schritt (F10) verwendet habe. Wenn ich Run (F5) mit Breakpoints verwendet habe, verhält sich die Zuweisung korrekt. Auch wenn der Code (gleiche Debug-Konfiguration) ohne Debugging des Verhaltens korrekt war. Ich habe es zu einer minimalen Funktion vereinfacht, bei der nur eine Zuordnung einer schwimmenden Punktkonstante war. Die Optimierung ist deaktiviert, sodass der Code wirklich ausgeführt wird. Ich hatte das gleiche Verhalten in komplexen Funktionen erlebt. Dies dient nur zur Darstellung des Problems.
Ich denke
Code: Select all
int AktualizujEfektivnuSadzbuDebug()
{
double cerpana_suma = 7.7;
cerpana_suma = 12.3;
if (cerpana_suma
Tatsächlich gibt es keinen Grund, warum es in den IF -Zustand eintreten sollte. Ich benutze f5 es nicht. Aber wenn ich F10 aus dem Haltepunkt auf Assigmnent "cerpana_suma = 12.3" verwende, wird 0 in die Variable zugeordnet. Und die Schaffung testet es für 0 positiv.551A5E03 movsd xmm0,mmword ptr [__real@402899999999999a (55E26F48h)]
551A5E0B movsd mmword ptr [cerpana_suma],xmm0
Wert für die Adresse 0x55e26f48 ist korrekt: