Der Unterschied zwischen den n++ und ++n am Ende einer while-Schleife? (ANSI-C)
dies ist wahrscheinlich eine dumme Frage, aber ich nur kann ' T es herausfinden. Es hat zu tun mit den unterschieden zwischen den n++ und ++n (die ich dachte, ich Verstand aber offenbar nicht).
#include <stdio.h>
#include <math.h>
long algorithmA(int n);
long algorithmB(int n);
int main(){
long A, B;
A = B = 0;
int n = 1;
while(A >= B){
A = algorithmA(n);
B = algorithmB(n);
n++;
}
printf("At n = %d, Algorithm A performs in %ld seconds & "
"Algorithm B performs in %ld seconds.", n, A, B);
}
long algorithmA(int n){
return pow(n,4) * 86400 * 4;
}
long algorithmB(int n){
return pow(3,n);
}
Hier können Sie wahrscheinlich sagen, ich bin versucht, um zu sehen, an welchem Punkt Algorithmus als Algorithmus B. Die Funktionen und Einheiten von Zeit, wurden mir in einem Hausaufgaben problem.
Anyways, ich dachte immer, dass die Bestellung von "++" würde keine Rolle, am Ende einer while-Schleife. Aber, wenn ich ++n anstelle von n++, bekomme ich die falsche Antwort. Kann jemand erklären, warum?
Edit: Gut es WAR, zeigt 24 mit ++n und 25 n++, aber es muss einen anderen Grund. Weil ich gerade überprüft jetzt, und es ist kein Unterschied. Vielen Dank für Ihre Geduld und Zeit, Jungs, ich wünschte nur, ich wusste, was ich Tat!
- Nicht sicher, ob eine direkte duplizieren (andere Sprache), aber ich Wette, das problem ist das gleiche. gibt es einen Unterschied zwischen x++ und ++x.
- Ich denke, Sie haben diesen nach hinten.
- lol.. nur es gelöscht.. 🙂 mis eingeben..
- Wenn die operation allein steht, und deren "Ergebnis" wird nicht verwendet, gibt es keinen Unterschied. Nur wenn das Ergebnis verwendet wird (wie in
myArray[n++]
) macht es einen Unterschied, und dieser Unterschied ist, ob Sie effektiv fetch array-element vor der Inkrementierung oder nach. - Es sollte keinerlei Unterschied zwischen diesen, da die Schrittweite nicht in einem Ausdruck verwendet. Haben Sie eine Ausgabe, die zeigt sonst?
- (Es sollte nicht machen einen Unterschied in den obigen code.)
- Hmm wirklich seltsam, es muss schon was anderes. Ich checkte wieder und es gab keinen Unterschied. Danke Jungs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einzige Unterschied zwischen
n++
und++n
ist, dassn++
ergibt den ursprünglichen Wert vonn
, und++n
ergibt den Wert vonn
nach, es wurde schon erhöht. Beide haben den Nebeneffekt, ändern Sie den Wert vonn
durch Inkrementieren es.Wenn das Ergebnis verworfen wird, wie es in deinem code gibt es keine wirksame Unterschied.
Wenn Ihr Programm verhält sich anders, je nachdem, ob Sie schreiben
oder
muss es aus irgendeinem anderen Grund.
In der Tat, wenn ich kompilieren und ausführen Ihres Programms auf meinem system, bekomme ich genau die gleiche Ausgabe in beiden Fällen. Hinzufügen Zeilenumbrüche um die Ausgabe-format, den ich bekommen:
Haben Sie nicht erzählt Sie uns, welche Ausgabe man bekommt. Bitte aktualisieren Sie Ihre Frage, um die Ausgabe in beiden Fällen.
Wenn Sie Inkrementieren, ohne eine Zuweisung, kein Unterschied. Jedoch, in den folgenden Umständen:
In diesem Beispiel wird die Anweisung ausgeführt, bevor das Inkrement.
Allerdings, in diesem Beispiel, erhöhen Sie tritt vor der Ausführung der Anweisung.
Operator-Rangfolge kann Ihnen helfen.
Den Präfix-Versionen (++n) ändern Sie die variable und dann übergeben Sie dessen Wert.
Die postfix-version (n++) übergeben Sie den aktuellen Wert und dann verändern Sie die variable.