venezianer27 schrieb:
Naja, ein while (true) reicht für eine Endlosschleife. Vorrausgesetzt du willst mit dem cin >> bBestaetigung; nur auf einen Tastendruck zum starten warten...
Ehrlich gesagt weiß ich gerade nicht was bei cin nach bool für eine Eingab erwartet wird? Eine Zahl? oder muss man "true" eingeben....
Bei mir wird bool(true) nach int(-1) ?glaub? gecastet und bool(false) nach int(0) !sicher! ... Deine Schleife würde dann nie ausgeführt... Aber ich geh jetzt schlafen. Nacht
Hallo, sorry war jetzt ne Weile nicht online, weil ich am Samstag früh weg musste, und dann keinen Empfang hatte. Zu deiner Antwort dirkski kann ich nur sagen, dass du Recht hast, das hab ich wohl vergessen, im Code anzugeben, wäre hilfreich!
Jedenfalls "1" wird als richtiger Antwort erwartet, und alles andere, soll die Schleife üb erspringen und es funkt auch super. Habs in der Nacht auf Samstag und gestern nochmal durchlaufen lassen und er führt die Schleife etliche Male durch und es würde heute noch laufen, hätte ich nicht abgebrochen! Danke euch allen für eure Hilfe. Eure weiteren Beiträge bin ich grad am Lesen! Lg
Ok, Sorry, bool(false) ist bei mir auch int(1). Ich weiß aber nicht ob das definiert ist. Falls irgendwo bool(false) = int(-1) ist klappt das nicht.
Weil Du in einen bool einliest kommen immer die Werte true und false raus. Wobei bei dir und mir scheinbar true = int(1) und false = int(0) ergibt.
Wenn ich hier im Beispiel unten Text eingebe (auch true) wird daraus bool(false) = 0.
Wenn ich irgendeine Zahl ungleich 0 eingebe (-12, 42 etc.) wird diese nach bool konvertiert, also bei dir und mir zu 1 = true.
Das mus aber evtl. nicht sein. Bei anderen Compilern könnte es auch -1 sein... Die Eingabe von 0 ergibt natürlich 0....
#include <iostream>
// bei g++ (hier 4.9) ist bool(true) = 1 und bool(false) = 0
// Ist das eigentlich definiert was false ist?
int main () {
bool b = true;
std::cout << "bool = true = " << b << "\n"; // Ergibt hier 1
b = 0; // Null ist false
std::cout << "bool = 0 = " << b << "\n"; // Ergibt hier 0
b = -42; // Alles ungleich Null ist true
std::cout << "bool = -42 = " << b << "\n"; // Ergibt hier 1
b = false;
std::cout << "bool = false = " << b << "\n" // Ergibt hier 0
"Eine Zahl eingeben: ";
std::cin >> b;
std::cout << "Zahl war: " << b << "\n";
}
Du solltest aus:
...
cin >> bBestaetigung;
while (bBestaetigung == 1)
{ ...
folgendes machen...
...
cin >> bBestaetigung;
while (bBestaetigung) // Weg mit dem == 1
{ ... // Bei der Eingabe wird sowieso jede Zahl ausser 0
// bei dir nach 1 konvertiert. 1 ist sowieso true
// und damit auch die Schleifenbedingung wahr
...dann bist du auf der sicheren Seite falls du mal über einen Compiler stolperst wo bool(true) = -1 ist...
hth
dirkski
Edit: falls du bBestaetigung == 1 für lesbarer hältst mach da einfach ein bBestaetigung != 0 raus...