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 00100000Wenn 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...