C ++ - Array-Initialisierung funktioniert nicht

8

Ich versuche ein Array von Bools wie folgt zu initialisieren:

%Vor%

aber wenn ich es debugge, sehe ich nur das erste Element des Arrays initialisiert, die anderen sind falsch. Wie kann das so sein? Ich verwende Qt auf Ubuntu 10 und die Initialisierung wird auf einem lokalen Array innerhalb einer Methode durchgeführt.

Ok danke für deine Antworten.

    
yan bellavance 30.08.2010, 18:39
quelle

5 Antworten

9

Weil die Array-Initialisierung in C ++ funktioniert. Wenn Sie nicht explizit für jedes Element einen Wert angeben, wird dieses Element standardmäßig auf Null gesetzt (oder hier auf false)

%Vor%

Beachten Sie, dass

%Vor%

Wird alle Werte auf false setzen oder müssen sie zufällig gesetzt werden, abhängig davon, wo diese definiert ist.

    
James Curran 30.08.2010, 18:42
quelle
10

Sie haben missverstanden. Offenbar werden alle nicht erwähnten Elemente auf den gleichen Wert initialisiert wie der letzte explizit initialisierte Wert. Der zuletzt genannte Wert war true , also würden alle weiteren Elemente auch auf true initialisiert werden. Ich hatte einmal denselben Glauben, aber ich habe schnell etwas anderes gelernt.

So funktioniert das nicht. Alle nicht erwähnten Elemente werden standardmäßig initialisiert, was für bool bedeutet false .

Um alle Elemente auf true zu setzen, versuchen Sie etwas wie std::fill_n :

%Vor%     
Rob Kennedy 30.08.2010 18:47
quelle
2

Dies ist das erwartete Verhalten. Das erste Element wird auf den angegebenen Wert initialisiert und der Rest wird auf den Standardwert 0 initialisiert:

%Vor%     
meagar 30.08.2010 18:42
quelle
-1

Da Sie nur das erste Element des Arrays explizit initialisiert haben, wird nur das erste Element initialisiert und die restlichen nicht.

    
mukeshkumar 30.08.2010 18:42
quelle
-1

Mit dieser Syntax initialisieren Sie nur das erste Element (mit Ihrem Wert und anderen erhalten Standard-Eins [falsch]), aber nicht andere. Sie sollten entweder int array und memset oder for loop verwenden, um alle Elemente zu initialisieren.

    
f0b0s 30.08.2010 18:43
quelle

Tags und Links