seltsamer fehler
-
#include <iostream.h> void main () { int a; cout << "a eingeben:"; cin >> a; cout << a; }
wenn man für a '08' oder '09' eingibt, wird in a '0' gespeichert. wenn man allerdings z.b. '02' eingibt wird wie erwartet '2' gespeichert. kann mir das bitte mal jemand erklären ?
mfg,
-
Ohne jetzt groß auszuprobieren sage ich folgendes:
Wenn eine 0 vor einer Zahl steht, beudeutet dies, dass die Zahl im Oktalsystem steht. Da dieses aber die Ziffern 8 und 9 nicht kennt, wird der Fehlercode 0 an a übergeben.
-
Ausserdem wäre es besser den Header mit #include <iostream> einzubinden und dann den namespace std auflösen, oder mit std:: drauf zuzugreifen.
Ausserdem sollte main int zurückgeben.
-
ja, das weiß ich auch. es war ja auch nur mal schnell zum testen. da waren die 2 extra zeilen einfach nicht drin :D. aber trotzdem danke.
mfg,
-
hmm, gibt es den eine möglichkeit, dass ich '08' eingeben kann, aber es dennoch als dezimale 8 gewertet wird? ich denke da an einen cast oder sowas ähnliches.
mfg,
-
#include <sstream> #include <string> #include <iostream> using namespace std; int main() { cout << "Bitte geben Sie eine Zahl ein: "; string buffer; cin >> buffer; while(buffer[0]=='0' && buffer.length()!=1) buffer.erase(0, 1); stringstream Str; Str << buffer; int a; Str >> a; cout << "Die Zahl lautet " << a; return 0; }
Ungetestet. Es kann auch sein, dass die Schleife unnötig ist.
-
int main () { int a; cout << "a eingeben:" << endl; cin.setf(ios::dec, ios::basefield); cin >> a; cout << a; }
Du kannst das mit der setf Memberfunktion machen:
hex, oct oder dec kannst du dort eintragen und jeweils die entsprechende Ausgabe erzwingen.Ich weiss aber nicht, ob das auch für iostream.h funktioniert.
-
danke, so geht's (hab mich extra an den c++-standard gehalten, damit Jover auch zufrieden ist
)
#include <iostream> int main () { int a; std::cout << "a eingeben: "; std::cin.setf(std::ios::dec, std::ios::basefield); std::cin >> a; std::cout << a << std::endl; return 0; }