Wie werden mehrere Variablen in C ++ auf denselben Wert initialisiert?

8

Würde das funktionieren?

%Vor%

Würde die zweite Codezeile richtig funktionieren und x, y, z jeweils auf 0,50 initialisieren?

    
Alan S. 08.03.2016, 20:16
quelle

6 Antworten

10

Ihr Code lässt x und y nicht initialisiert. Eine leichte Neuanordnung kann jedoch die Wiederholung eines Anfangswerts erschweren:

%Vor%

Variablen, die früher in einer Deklaration deklariert wurden, sind im Bereich späterer Deklarationen.

Dies ist manchmal besonders nützlich, wenn das Auswerten eines Initialisierers nicht-triviale Laufzeitkosten haben kann. Beispiel: In der folgenden verschachtelten Schleife, in der m eine Multimap ist:

%Vor%     
Kerrek SB 08.03.2016 20:21
quelle
4

Nein, nur z wird initialisiert. Sie müssen es so schreiben:

%Vor%

Aber Sie können eine Aufgabe wie folgt schreiben:

%Vor%     
Rabbid76 08.03.2016 20:18
quelle
3

Einfach Nein. Nur z wird initialisiert.

Wenn Sie versuchen, sie später zu drucken

std::cout << a << " " << x << " " << y << " " << z;

Sie erhalten diese Art von Warnung vom Compiler:

Warnung: 'x' wird in dieser Funktion nicht initialisiert verwendet

Aus Gründen der Klarheit verwende ich die zweite Option, die Rabbid76 vorgeschlagen hat:

%Vor%     
FrankS101 08.03.2016 20:17
quelle
2

Wenn Sie allen drei Variablen zuweisen möchten, schreiben Sie

%Vor%

was äquivalent zu

ist %Vor%

Der Code, den Sie nur präsentieren, weist z zu.

    
stackptr 08.03.2016 20:20
quelle
1

Die zweite Codezeile:

%Vor%

hat tatsächlich einen Rückgabewert. Normalerweise wird es nicht gefangen oder benutzt, aber es ist da. So gibt x = 50.1 den Wert 50.1 zurück.

Dies bedeutet, dass Sie Folgendes tun könnten:

%Vor%

Und der Wert wird sich in der Kette nach oben bewegen, wo x = y zurückkehrt und der Wert nicht erneut abgefangen wird. Nachdem diese Zeile ausgeführt wurde, haben x, y und z alle den Wert 50.1.

    
Hitsugaya198 08.03.2016 20:22
quelle
1

Sie können erreichen, was Sie tun wollen: x = y = z = 0,50;

    
quelle

Tags und Links