C++ while-Anweisung nicht gleich überprüft

Ich begann das Programmieren in C++ (VS 2015).

Schrieb ein kleines Programm, welches mit Hilfe einer while-Anweisung.

#include <iostream>

using namespace std;

int main() {
    int x = 1;
    int y = 2;
    int z = 0;
    while (x != y || z != y) {
        cout << "x: " << x << "\n" << "z: " << z << "\n";
        x++;
        z++;
    }
    cin.get();
}

Wenn ich das richtig sollte es so (aber da es sich um eine unendliche Schleife, ich denke, meine Logik ist nicht so korrekt, wie ich denke).

So, in meinem Kopf der while-Anweisung sollten die arbeiten in dieser Weise.

Während X nicht gleich y ODER z nicht gleich y.

+1 zu X und +1 zu Z.

Tun Sie dies, bis die Aussage wurde wahr (oder mindestens die linke Seite des Ausdrucks).

  • Bitte den code Debuggen, und die Antwort wird offensichtlich. Legen Sie einen Haltepunkt auf z++ und dann werden Sie in der Lage sein zu sehen, wie die Werte jener Variablen, die bei jeder iteration. Auf Stack Overflow, die Sie brauchen, zu bemühen, um das problem zu lösen, bevor Sie es veröffentlichen.
  • Das richtige Werkzeug, um solche Probleme zu lösen, ist der debugger. Sollten Sie Schritt für Schritt durch den code Zeile für Zeile vor Fragen auf Stack Overflow. Für weitere Hilfe, Lesen Sie bitte gewusst Wie: Debuggen von kleinen Programmen (von Eric Lippert). Auf ein minimum, Sie sollten [Bearbeiten] Ihre Frage an einen Minimale, Vollständige und Überprüfbare Beispiel, reproduziert Ihr problem, zusammen mit den Beobachtungen, die Sie gemacht in den debugger.
  • Dies ist ein while - Schleife, keine until Schleife. Es Schleifen, bis seine Bedingung mit false ausgewertet wird. Auch, bitte loswerden using namespace std;.
  • Nun, verwendet die thebugger schon. Vielleicht ist meine Frage nicht die richtige, weil Sie die Barriere der Sprache. Und meine beiden (debbuging-Methode mit cout) und der VS-debugger hat das gleiche Ergebnis. breakpointed bei den Z++ - Aufruf. x=2; y=2; und z 1 nach. dann ist die Funktion überprüfen Sie es. wenn ich dieses richtig (zumindest den ODER-operator) "wenn auf der linken Seite Ausdruck true ist, wird das kombinierte Ergebnis ist true (der rechten Seite den Ausdruck nie ausgewertet)." X ist gleich Y, und es sollte halt die Schleife.
  • Stoppen Sie Ihre Schleife, die Bedingung muss false
  • Darf ich Fragen, was ist Los mit using namespace std;
  • Froh, dass du fragst! stackoverflow.com/questions/1452721/...
  • Übrigens, Sie sollten auch loszuwerden, die cin.get() Aufruf am Ende.

Schreibe einen Kommentar