Ich habe gerade die folgende Codezeile geschrieben:
%Vor% Meine Absicht ist, die Variable count
innerhalb der Datenstruktur zu erhöhen, auf die data_ptr
zeigt, bevor der Vergleich mit threshold
durchgeführt wird, und diese Codezeile funktioniert.
Wenn ich stattdessen data_ptr
vor dem Vergleich erhöhen wollte, hätte ich folgendes geschrieben:
Aus Neugier habe ich auch diese Codezeile ausprobiert:
%Vor%Und festgestellt, dass es genau so wie das erste verhält.
Erste Frage: Warum funktioniert Beispiel # 3 genauso wie Beispiel # 1? Geht es um die Präzedenz von Betreibern? Etwas im Standard? Ich musste ein schnelles Testprogramm schreiben, weil die Antwort für mich nicht offensichtlich war.
Zweite Frage: Soll ich diese if
-Anweisung anders schreiben? Ich könnte das Inkrement zuerst in einer eigenen Zeile ausführen und dann die Bedingung testen, um mögliche Verwechslungen zu vermeiden. Ist das notwendig, oder sind die ersten beiden Beispiele für sich allein offensichtlich?
Ja, das ist eine Frage der Vorrangstellung des Betreibers. Der Pfeiloperator hat eine höhere Priorität als der Inkrementoperator.
Um Ihre zweite Frage zu beantworten, würde ich diese Art von Konstrukt im Allgemeinen in zwei separate Aussagen aufteilen:
%Vor%Dies betont, was vor sich geht und verhindert mögliche Verwirrung. Dies ist jedoch wahrscheinlich eine Frage der Präferenz.
Zum Beispiel:
%Vor%Versus:
%Vor%Tags und Links c increment operators dereference