do-while Schleife Bedingung funktioniert nicht



  • Hallo Leute,

    ich habe mir eine Schleife gebastelt, in der der Benutzer eine Eingabe betätigt,
    welche danach auf Richtigkeit geprüft werden soll. Falls nicht einer der beiden Möglichkeiten enthalten ist,
    soll diese wieder von vorn anfangen. Hier mal die Schleife.

    do {
           printf("\n\n\n\t\t\tNochmal?: ");
           scanf("%s", &weiter);
           printf("\nDas ist ungueltig!\n\n");
    
       } while(weiter = !'j' ^ weiter = !'n'); // Dieser Teil hier funktioniert nicht
    

    Irgendwie funktioniert die Abfrage nicht so ganz, kann mir jemand da helfen bitte?



  • Erstens hast du da Zuweisungen, keine Vergleiche. Zweitens ist !'j' das gleiche wie !'n', nämlich false. Drittens, warum in aller Welt ^?



  • 1. Das ^ ist das Bitweise XOR oder Exlusiv-Oder.
    - Das logische Oder ist || Das logische Und ist&&.
    2. werden Vergleiche mit == statt = gemacht bzw. != für Ungleich.
    3. Wird die Schleife ausgeführt, solange die Bedingung wahr (d.h. ungleich 0) ist



  • while(weiter != 'j' && weiter != 'n')
    


  • @High,

    das XOR war schon gewollt drinnen.
    Es soll ja entweder "j" oder "n" sein. Du kannst dich ja auch nicht für JA und NEIN entscheiden 🙂



  • ^ arbeitet bitweise, das ist Schwachsinn.



  • ender schrieb:

    @High,

    das XOR war schon gewollt drinnen.
    Es soll ja entweder "j" oder "n" sein. Du kannst dich ja auch nicht für JA und NEIN entscheiden 🙂

    Dann hats du zu kompliziert gedacht denn das logische XOR ist != (dann aber mite mit Klammern).



  • Naja ender, ich habe es richtig stehen. Tue solange weiter ungleich ('j' und 'n') ist. Wenn jetzt weiter = 'j' oder 'n' ist wird abgebrochen.



  • Okay, danke. Dann habe ich es nur falsch interpretiert.


Log in to reply