Ihr Code lässt x
und y
nicht initialisiert. Eine leichte Neuanordnung kann jedoch die Wiederholung eines Anfangswerts erschweren:
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:
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%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.
Sie können erreichen, was Sie tun wollen: x = y = z = 0,50;