Falsche Rechenausgabe
-
Hallo,
ich habe mich wieder dazu entschlossen micht mit dem Thema C++ zu beschäftigen. Um wieder den Einstieg zu finden, habe ich mir diverse Quellcodes angeschaut.
Mein Versuch, einen simplen Taschenrechner als Konsolenanwendung zu schreiben (nach Vorlage), funktioniert soweit auch problemlos. Jedoch ist das Ergebnis (Ausgabe) falsch ... Leider kann ich den Fehler nirgendwo erkennen.
z.Bsp.: Ich erhalte bei "5+5" als Ergebnis "5 + 9211280014
Das Problem tritt bei jeder Rechenoperation und jeder Zahl auf.
Vielen Dank bereits
Christian
#include <iostream> using namespace std; int main() { double zahl1, zahl2; double ergebnis; char rechenzeichen; cout << "Bitte geben Sie die Rechenaufgabe ein: " << endl; cin >> zahl1 >> rechenzeichen >> zahl2; switch (rechenzeichen) { case '+': ergebnis = zahl1 + zahl2; break; case '-': ergebnis = zahl1 - zahl2; break; case '*': ergebnis = zahl1 * zahl2; break; case '/': ergebnis = zahl1 / zahl2; break; // Fehlerausgabe und Programm beenden, falls falsches Rechenzeichen eingegeben wurde default: cout << "Ung\x81ltiges Rechenzeichen! \n"; return 1; } // Aufgabe zum Schluss erneut komplett ausgeben cout << zahl1 << ' ' << rechenzeichen << ' ' << zahl2 << ' = ' << ergebnis << '\n'; }
-
Strings werden mit " geschrieben. Keine Ahnung, was der Compiler aus ' = ' macht, offensichtlich aber nichts brauchbares.
-
AFAIK wird
' = '
als 32Bit integer behandelt, um genau zu sein "2112800". Und so wird es dann auch ausgegeben.
-
" ergibt ein nullterminiertes char-array, ' ein char Die einzelnen eingaben werden bei >> durch Leerzeichen getrennt, dh du musst tatsächlich '5 + 5' eingeben.
-
roflo schrieb:
Die einzelnen eingaben werden bei >> durch Leerzeichen getrennt, dh du musst tatsächlich '5 + 5' eingeben.
Nein muss man nicht.
-
Hast recht.
-
DarkShadow44 schrieb:
AFAIK wird
' = '
als 32Bit integer behandelt, um genau zu sein "2112800". Und so wird es dann auch ausgegeben.
Kann man das irgendwie abändern/weiterverarbeiten? Sprich das Ausgabe"format"?
-
chp31 schrieb:
DarkShadow44 schrieb:
AFAIK wird
' = '
als 32Bit integer behandelt, um genau zu sein "2112800". Und so wird es dann auch ausgegeben.
Kann man das irgendwie abändern/weiterverarbeiten? Sprich das Ausgabe"format"?
nimm "richtige" Gänsefüßchen (shift+2). Dann wird das so ausgegen, wie erwartet