simple io Schleife bricht nach erstem Durchlauf ab



  • Hallo

    ich möchte eine simple io als Schleife ausgeben. Jedoch wird sie nur einmal durchlaufen, unabhängig von der Eingabe. Ich denke das Problem könnte bei der Bedingung liegen. Was meint ihr?

    float milesval;
    	char yn = 'y'; //flag
    
        do {
    	cout << "\n\nPlease enter a distance in miles: ";
    	cin >> milesval;
    	cout << "\n" << milesval << " are equal to " << (milesval*1.609) << "km";
    	cout << "\n\nDo you want to continue? (y/n) :   ";
    	cin >> yn;
    	} while ((yn&0x20) == 'y');
    


  • du benuttz da ein bit und ... Das char wird mit 0x00100000 verundet übrig ist also entweder 0x0 oder 0x0010000 .. wenn 'y' nicht auch 0x0010000 ist wird das wohl nie wahr ...



  • padreigh schrieb:

    du benuttz da ein bit

    dachte char ist ein byte groß

    Das char wird mit 0x00100000 verundet

    nein, aber mit 00100000_2

    in C ging das doch auch?



  • Sorry für die falschen x's bei den Binärdingern ... dachte es reicht dich in die Richtung zu stuppsen, nun also nochmal Langtext:

    char == 00000000(Basis 2) bis 11111111(Basis2)
    0x20 == 00100000(Basis 2)

    00000000           11110111           10101011
    & 00100000         & 00100000         & 00100000
    ----------         ----------         ----------
      00000000           00100000           00100000
    

    Wenn nun nicht 'y' == 00100000(Basis2) dann ist der Ausdruck immer false ... mach einfach yn == 'y' und feddich ...



  • ups, hatte es falsch in errinerung. | statt & wird's tun.

    Danke für deinen Stupser 🙂



  • Benutze lieber tolower anstatt Bitoperationen, um in Kleinbuchstaben zu verwandeln:

    tolower(yn) == 'y';
    

    Evtl. noch <cctype> includen...


Anmelden zum Antworten