Ist dieser Code C ++ gültig?

8

Ist der folgende Code C ++ gültig?

%Vor%

Hinweis: Der Code kompiliert auf meinem g ++ - Compiler.

    
CuriousGuy 13.10.2010, 05:04
quelle

3 Antworten

19

Wie ist es? Nein. Wenn es im Körper einer Funktion wäre? Ja.

Die erste Zeile deklariert eine ganzzahlige Konstante namens var mit einem Wert von 10 .

Die geschweifte Klammer beginnt einen neuen Block. Innerhalb dieses Blocks wird eine neue Variable mit dem Namen var deklariert, die ein Array von int mit einer Größe ist, die dem Wert der zuvor als var ( 10 ) deklarierten Integer-Konstante entspricht.

Der Schlüssel ist, dass var sich auf die erste Variable bezieht, bis nach die zweite Variable namens var vollständig deklariert ist. Zwischen dem Semikolon nach der zweiten Deklaration und der schließenden Klammer verweist var auf die zweite Variable. (Wenn es einen Initialisierer für die zweite Variable gab, würde sich var auf die zweite Variable unmittelbar vor dem Initialisierer beziehen.)

    
James McNellis 13.10.2010 05:07
quelle
5

Ja, der Code ist gültig C ++. Non-local var ist bis zur Deklaration von local var sichtbar.

So definiert int var[var] ein lokales Array von 10 ganzen Zahlen.

    
Prasoon Saurav 13.10.2010 05:06
quelle
1

Ja, der Code ist gültig C ++ Es ist ein Konzept von SCOPE: Verbergen von Namen

%Vor%

Ich denke, dieser Link löscht deine Zweifel

IN C ++:

Ссылка

In C:

Ссылка

Wenn Sie ein tiefes Wissen haben möchten. Hier: Gehen Sie auf diesen Link, hier handelt es sich um Lexikalisches oder dynamisches Scoping

Ссылка

aber in Ihrem Code: "Scope :: " der Sichtbarkeit von var .Hier unterscheidet es sich wie lokale und nicht-lokale Variable. Innere Klammern {x = 1; } lokale Variable. wo wie hier {y = 1; {x = 1;} }, hier ist es anders.

hilfreiche Links

Ссылка

Ссылка

    
BE Student 13.10.2010 05:18
quelle

Tags und Links