Quatsch. Wichtig ist festzulegen, was der Inhalt einer level-Variable bedeutet. Ob man nun immer eins dekrementiert oder inkrementiert macht dann keinen Unterschied mehr, so lange es an allen Stellen konsistent ist.
Das ist schon richtig. Natürlich muss man sich erst mal darüber klar sein, was die Funktion tun sollte. Allerdings halte ich es für unsinnig, eine Variable, die wenn sie verwendet wird, immer dekrementiert werden muss, nicht direkt nach der Eingabe zu dekrementieren. Wenn du die Variable dann häufiger verwendest und einmal vergisst sie zu dekrementieren, bekommst du halt evtl. undefiniertes Verhalten. Und da mache ich es lieber einmal für immer und kann mir sicher sein, dass ich diese Variable in Verbindung mit meinem Array ohne zusätzliche Rechenoperationen verwenden kann als dass ich es bei 100 Mal möglicherweise einmal vergesse. Natürlich hast du recht, dass es im Grunde genommen egal ist, ob man nun eins dekrementiert oder inkrementiert. Der Unterschied liegt nur darin, dass man bei Vergessen der Dekrementation ggf. undefiniertes Verhalten hervorruft, bei Vergessen der Inkrementation schlichtweg eine falsche Ausgabe erzeugt, was ohne große Probleme auffinbar sein sollte.