verwirrung logisches UND bzw. ODER



  • Huhu,

    ich brauche kurz eine kleine Denkhilfe:

    ich will eine Abfrage, die immer wieder wiederholt wird, solange der Benutzer nicht j oder n eingegeben hat:

    do
        {
        printf("\nUmrechnung[j/n]? ");
        umrechnung = tolower(getchar());
        cb(); //leert nur den Puffer
    
        }while(umrechnung != 'j' && umrechnung != 'n');
    

    so schaut die Abfrage aus. Wenn ich ein && schreibe, geht alls so wie ichs will. Aber müsste ich nicht rein "logisch" gesehen || schreiben, da umrechnung ja ENTWEDER j ODER n ist, oder anders gesagt: die Schleife soll solange ausgeführt werden, solange umrechnung ungleich j ODER ungleich n ist.
    Beim && müssen doch beide Bedingungen erfüllt sein, sprich: Führe die Schleife aus solange umrechnung ungleich j UND ungleich n ist?!
    Ich fürchte ich hab grad nur ein Brett vorm Kopf...sorry für die triviale Frage

    Grüße



  • chmbw schrieb:

    ...solange der Benutzer nicht j oder n eingegeben hat

    Das ist

    !(umrechnung == 'j' || umrechnung == 'n')

    chmbw schrieb:

    oder anders gesagt: die Schleife soll solange ausgeführt werden, solange umrechnung ungleich j ODER ungleich n ist.

    Das ist

    (umrechnung != 'j' || umrechnung != 'n')

    Das ist eine ganz andere Aussage, und sie ist immer wahr.

    Jeder mögliche Wert von umrechnung ist immer ungleich j oder ungleich n. Für n ist der erste Teil der Bedingung wahr (n ist ungleich j), für j der zweite (j ist ungleich n).



  • oh man, danke...man sollte nicht mit schlafdefizit programmieren 😉 bin wohl echt zu verpeilt 😶


Anmelden zum Antworten