if - else Anweisung
-
hab diesen Code hier:
#include <iostream.h> #include <conio.h> int main() { int flag; cout << "Geben sie den flag-Wert ein: "; cin >> flag; if (flag == 1) {cout << "Hei\341";} else if (flag == 2) {cout << "Lauwarm";} else if (flag == 3) {cout << "Kalt";} else {cout << "Au\341erhalb des Bereichs";} getch(); }
Wenn ich jetzt einen Buchstabe etc. eingebe, gibt er immer lauwarm aus.
Wieso ?
Hat wohl was mit dem Integer zu tun. Komm aber nicht drauf.
-
Folgendes funktioniert bei mir, Änderung mit Kommentar
#include <iostream> // nicht iostream.h #include <conio.h> using namespace std; // Für cout und cin erforderlich // es müsste sonst std::cout heissen int main() { int flag; cout << "Geben sie den flag-Wert ein: "; cin >> flag; if (flag == 1) {cout << "Hei\341";} else if (flag == 2) {cout << "Lauwarm";} else if (flag == 3) {cout << "Kalt";} else {cout << "Au\341erhalb des Bereichs";} getch(); return 0; // Wenn du int main() definierst, // solltest du auch einen Wert // zurückgeben }
-
Ähm, bei mir funktioniert der Quelltext (C++ Builder)
Du hast Visual C++.
-
Huch, sorry, aber dann weiss ich auch nicht. Bei mir wird nach Eingabe eines Buchstabens "Außerhalb des Bereichs" ausgegeben.
-
*nachobenschieb*
Immer noch keine Lösung?
-
Ich habe das Programm eben mit VS C++ .NET und dem C++ Builder 5 getestet und beide machen genau das was sie sollen. Bei der Eingabe vo 1, 2 oder 3 wird je nach dem Heiß, Lauwarm oder Kalt ausgegeben. Bei Eingabe eines Buchstaben wird "Außerhalb des Bereichs" ausgegeben.
Ws mich eigentlich gewundert hat ist, das der Builder trotz
std::cin.sync(); std::cin.clear(); std::cin.get();
nicht gehalten hat und ich getch(); benutzen musste.
Code-Hacker
-
OK, dann ist es wohl ein Bug vom Builder.
Mit Devcpp hat's nun auch funktioniert.
-
wennn du einen Buchstaben eingibst, wandelt der Compiler den Buchstaben in eine Zahl um (ASCII), z.B. A=58 (glaub ich jedenfalls
)
Naja und da laut ASCII-Code alle Buchstaben einen höheren wert haben als 3 kommt immer "Außerhalb des Bereichs" an.
Das müsste eigentlich der Grund sein, aber woher soll ich das schon wissen