Wie jeder normale C++ Programmierer, wenn ich diesen Code eingeben ...Integer hat nicht den erwarteten Wert in Debugger
for (int m = 0; m < 3; m++){
for (int n = 0; n < 3; n++){
if (A[m].substr(size,location) == B[n].substr(size,location)){
return false;
}
}
}
ich der erste Wert von m erwarten 0 in meiner Iteration zu sein. (Weil ich es buchstäblich als einen Wert von 0 deklariert hatte). Allerdings war mein Programm ein bisschen funky, also entschied ich mich, es im Debugger zu betrachten. Interessanterweise entschied C++ statt eines Anfangswerts von 0, dass m einen Anfangswert von 32767 haben sollte.
Kann mir jemand erklären, warum und wie dies möglicherweise passieren könnte?
Sieht aus wie eine Art von Integer Over/Underflow-Fehler. Sie könnten versuchen, 'm' aus der Schleife auszudrucken. –
Je nachdem, wo der Debugger pausiert hat, hat er möglicherweise an einer Stelle pausiert, an der 'm' * deklariert *, aber noch nicht * initialisiert wurde. Führen Sie einen Schritt im Debugger aus. Erhält es dann den Wert 0? – templatetypedef
Kompilieren Sie mit optimierter Optimierung? – kennytm