Kleiner gleich Sechs? Nein. Aber kleiner sechs wäre möglich. Es ist egal ob du sagst kleiner gleich Fünf oder kleiner Sechs, denn beide Male wäre es 0 - 5. Die 5 ist kleiner als 6 und bei kleiner gleich ist die 5 mit eingeschlossen.
Es ist wie in der Mathematik.
Einen Array erstellst du immer mit der wahren Länge: 6 [0, 1, 2, 3, 4, 5]. Das wären somit 6 Steckplätze, die gebraucht werden. Diese fangen aber bei 0 an und hier ist das Umdenken wichtig. Ich habe es auch erst richtig verstanden, als ich den Grund erfahren habe, warum es so ist. Den Grund erfährt man in C / C++, wo Arrays keine Arrays sind, sondern Pointer hinter einer Maske.
Dabei funktioniert es wie folgt: Du hast deine Variable des Arrays. Diese zeigt auf eine Adresse in deinem Speicher. Und nach dieser Adresse kommt eine andere Adresse mit dem nächsten Wert. Du kannst also den Pointer wie folgt rechnen *(Array + Index). Das entspricht dann Array[Index]. An der Adresse von Array ist ja auch bereits ein Speicher. Diesen möchte man nicht leer lassen. Deshalb rechnet man *(Array + 0), was dann Array[0] entspricht. Würde man eine 1 setzen, überspringt man ja einen Bereich, welchen man zur Verfügung hat, aber dann ignoriert. Deshalb wäre das zweite Element auch an Position 1, weil es direkt darauf folgt, also *(Array + 1) oder auch Array[1]. Und deshalb rechnet man dabei immer mit 0 als erste Zahl.
Bei der Länge wiederum fragt man die Länge ab. Die Länge startet nicht bei 0. Du zählst ja nicht 0 1 2 3 ..., sondern 1 2 3 4 ... . Deshalb gibt die Länge auch die Zahl zurück, die du schon beim erstellen des Arrays eingegeben hast. Es ist die tatsächliche Länge. Der einzige Grund des Startes bei 0 ist das Speichermanagement, damit man keinen freien Platz überspringt. Aber zählen tut man trotzdem wie gewohnt.
Deshalb wäre es auch <= 5 oder < 6, wenn man 6 zählen will, da der Steckplatz bei der Adresse des Arrays bereits beginnt und deshalb + 0 gerechnet wird.