Probleme mit Feldinitialisierer
-
Folgendes soll 18 mal die '0' ausgeben:
int feld[18] = {}; for (int i=0; i<sizeof(feld); i++) { cout << feld[i]; }
Ausgabe ist aber: 000000000000000000-89132498392139-321823213213321-21397123789123-123213123132123-9872318932478-312871213-988132991231-713278789213789-879182798213-231897897123-7132798379871928-8923177392897123-781237897213321-97831279987237-09709123783210897-8913289732
habt ihr 'ne idee?
-
Setz in die {}Klammer eine 0 und alles ist im Lot.
-
das habe ich auch schon probiert,
denn im buch von bjarne steht:"... zu wenig Elemente enthält, wird für die verbleibenden Feldelemente 0 angenommen."
funkt aber nicht! genau der gleiche mist...
-
Achso, ja denn ist das sizeof() das Problem.
Das muss du noch durch die größe des typs int teilen, da er die Größe in Byte zurückliefert.
-
gibt es eine möglichkeit die anzahl der feldelemente zu ermitteln?
mit sizeof grabbe ich anscheinend ja zuviele informationen.
-
wenn ich durch 4 teile funktioniert es,
aber wieso? sehe das keinen sinn. dachte immer 'int' währe 32bit...
gibt es keine elegantere methode? danke
-
int ist nicht "immer" 32Bit, sondern so groß wie die Breite der CPU
Wieviel Byte sind denn 32 Bit?
sizeof(feld)/sizeof(int) = Anzahl des Felds
-
4B . Hast ja recht.
danke!