Unreachable code in der for-Schleife increment?
Ich bin immer ein C4702: unreachable code warning in einer for-Schleife; die seltsame Sache ist, dass - durch das Auseinanderbrechen der Komponenten im inneren des parens - die Warnung Punkte der Inkrement-Teil. Hier ist ein Beispielprogramm, das veranschaulicht, die diesen Fehler:
int main()
{
int foo = 3;
for (int i = 0;
i < 999;
i++) //warning on this line
{
if (foo == 4);
{
break;
}
}
return 0;
}
Ich kann nicht herausfinden, was falsch mit dieser Linie, weil die for-Schleife sieht sehr straight-forward.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie ein verirrtes Semikolon in if-Anweisung:
Daran erinnern, dass for-Schleifen haben die folgende Struktur:
Ausführung wird fortgesetzt in der folgenden Reihenfolge:
initialisation
condition
; wenn false dann Endestatement
increment/decrement
Wenn der compiler die Warnung über die
increment/decrement
nicht erreichbar, bedeutet es, dass etwas, bevor es verursacht die Ausführung immer überspringen, in diesem Fall, die streunenden Semikolon bewirkt, dass diebreak
immer ausführen, springen aus der Schleife vorzeitig.Dies ist die gleiche wie
So jedenfalls wirst du
break
wegen derif(foo == 4);
soi++
ist nicht erreichbarDes Problems (d.h. die unbeabsichtigte 😉 ist bereits beschrieben in zwei Antworten.
Ich möchte nur hinzufügen, dass, sollten Sie einen Blick in Ihre compiler-Optionen einstellen. Viele Compiler kann erkennen, wie "seltsam aussehende" code und geben Ihnen eine Warnung. Zum Beispiel:
Warnung: "leerer Körper in einer 'if' - Anweisung"
Weiteren kann der compiler so konfiguriert werden, behandelt alle Warnungen als Fehler.
In anderen Worten - den compiler-Optionen kann oft helfen Ihnen bei der Suche nach "unbeabsichtigte code", so dass Sie vermeiden, Zeit zu verschwenden.
BTW - die eclipse-editor können sogar geben Sie eine "verdächtige Semikolon" Warnung sobald Sie geben Sie eine solche if-Anweisung.