Leistungsunterschied im Zustand der For-Schleife?

7

Ich habe eine einfache Frage, die ich hauptsächlich wegen meiner Neugierde stelle.

Was sind die Unterschiede zwischen diesen beiden Codezeilen? (in C ++)

%Vor%

Die Auswahl der Bedingungen ist völlig willkürlich, ich bin nur an den Unterschieden zwischen, und & interessiert.

Ich bin kein Anfänger zum Codieren, aber ich habe mich nie mit dem Komma-Operator beschäftigt.

Gibt es Unterschiede zwischen Leistung und Verhalten oder ist das rein ästhetisch?

Eine letzte Anmerkung, ich weiß, dass es größere Leistungsfische gibt als einen Bedingungsoperator, aber ich bin nur neugierig. Verwöhnen Sie mich.

Bearbeiten Danke für deine Antworten.

Es stellt sich heraus, dass der Code, der zu dieser Frage geführt hat, den Komma-Operator in der beschriebenen Weise missbraucht hat. Ich fragte mich, was der Unterschied war und warum es kein & Amp; & amp; Operator, aber es wurde nur falsch geschrieben. Ich dachte nicht, dass irgendetwas nicht stimmt, weil es gut funktioniert hat. Danke, dass du mich aufgerichtet hast.

    
CodeFusionMobile 07.07.2009, 21:13
quelle

2 Antworten

10

Obwohl es so aussieht,

%Vor%

und

%Vor%

sind nicht gleichwertig.

Hier ist der Beweis.

%Vor%

Ergebnis:

%Vor%

Dies bedeutet, dass bei der Bestimmung, wann die Schleife beendet wird, N > 0 verwendet wird. Wenn N = 10 , bedeutet dies, dass es immer wahr ist und die Schleife niemals beendet wird.

Führen Sie das aus und sehen Sie sich den Beweis an.

%Vor% %Vor%

Wenn N eine Konstante oder Variable ist, die sich innerhalb der Schleife nicht ändert Dann könnten Sie einfach den N > 0 check entfernen, indem Sie ihn zuerst einmal prüfen, d. h.

%Vor%     
Matt 08.07.2009, 05:19
quelle
33

Wenn Sie ein Komma wie dieses verwenden, wird einfach die erste Bedingung verworfen .

Der Komma-Operator bedeutet "führe diese Anweisungen in dieser Reihenfolge aus und nimm den Wert des letzten".

    
RichieHindle 07.07.2009 21:15
quelle