(Leider im Voraus, ist diese Frage wahrscheinlich sehr einfach. Ich Code als Hobby zu schreiben und ich versuche gerade jetzt um einige Dinge, meine Meinung zu wickeln.)Keine Bedingung in einer for-Schleife?
ich eine Schleife Aussage wie kürzlich angetroffen (n
a zuvor eingestellte positive ganze Zahl):
int cnt;
for(cnt=0; n; cnt++){
n &= n - 1;
}
Wenn ich richtig verstehe, sollte der mittlere Eintrag in einer Schleife eine Bedingung sein, aber n;
scheint nicht zu einem Zustand überhaupt zu sein. Es sei denn, wenn es sich um ein bool (true
wenn n!=0
und false
wenn n==0
) verstanden wird. Wenn dies der richtige Weg ist, darüber nachzudenken, würde der folgende Code dem obigen vollkommen entsprechen?
Wenn ja, warum sollte man den früheren Schreibstil anstelle der while-Schleife wählen? Es scheint mir, dass eine while-Schleife hier die klarste und intuitivste Wahl wäre, also frage ich mich, ob es einen Vorteil in der for-Schleife gibt, den ich verpasst habe? Danke für jeden Vorschlag!
"klar und intuitiv" ist subjektiv, vielleicht hält der Autor des Codes die 'for' Schleife für klarer? Der einzige Vorteil, den ich mir vorstellen kann, ist, dass die for-Schleife eine Codezeile weniger ist. – UnholySheep
@UnholySheep Sie meinen also, dass beide Code-Schnipsel vollkommen gleichwertig sind? Danke für die Information! – Kagaratsch
Die 'while' Schleife ist * nicht * äquivalent, die Bedingung sollte' n! = 0' (oder einfach 'n') sein, damit sie äquivalent ist. Außerdem ist es fast so, wie 'for' Loops implementiert werden. –