Eingabe Buchstabe Ausgabe Zahl

duld

Grünschnabel
Hallo User,

ich bin ein kompletter Anfänger was C/C++ betrifft und hätte eine Frage bezüglich der Eingabe eines Buchstaben obwohl nach einer Zahl gefragt wird.
Mein folgendes Programm sieht wie folgt aus

#include <iostream>
using namespace std;

int main ()
{
int zahl;
cout << "Geben sie eine Zahl ein" << endl;
cin >> zahl;
cout << " " << endl;
cout << "Das doppelte von " << zahl << " ist " << zahl * 2 << endl;
cin.get ();
}

Wenn ich jetzt statt einer Zahl einen Buchstaben eingebe liefert er mir meistens die Zahl 1 !! Woran liegt das?
Bitte um erklärung :)

MGF duld
 
Hi.
Wenn ich jetzt statt einer Zahl einen Buchstaben eingebe liefert er mir meistens die Zahl 1 !! Woran liegt das?
Bitte um erklärung :)
Das ist einfach nur Zufall.

Du hast die Variable "zahl" nicht initialisiert, also bekommt diese einen zufälligen Wert - je nach dem was gerade dort im Speicher steht.

Wenn die Eingabe aufgrund eines falschen Formats nicht erfolgreich ist, dann wird der Wert der Variable auch nicht geändert; sie behält ihren zufälligen Wert vom Anfang einfach bei. Deswegen sollte man immer prüfen ob eine Eingabe auch erfolgreich war:
C++:
if (cin >> zahl) { // wenn Einlesen von cin nach zahl erfolgreich
  cout << " " << endl;
  cout << "Das doppelte von " << zahl << " ist " << zahl * 2 << endl;
} else {
  cout << "Fehler.";
}
Gruß
 
Vielen Dank das hat mir schonmal sehr weitergeholfen.

Das heisst also, dass für jeden Buchstaben den ich eingebe, dieser einen bestimmen Zahlenwert im Speicher hat?! Muss das für die FH machen und die eigenltiche Frage ist nämlich

Warum ergibt der Eingabe eines Buchstabens als Zahl 1 oder einen anderen Wert ( Irgendwie auch komisches Deutsch ;) )

MFG duld
 
Jeder Buchstabe hat einen fest definierten Wert. Der Wert entspricht der ASCII-Tabelle: hier

Anhand der Tabelle kannst du auch erkennen, dass nicht nur Buchstaben, sondern auch Sonder"zeichen" wie Backspace, Escape usw. einem Zahlenwert zugewiesen sind. Intern werden also keine Buchstaben, sondern lediglich Zahlencodes verwendet.


mfg kickerxy

#edit: im übrigen können Computer generell nur mit Zahlen umgehen, im Grunde ja auch nur mit dem Dualsystem (I/0-System).
 
Zuletzt bearbeitet:
Zurück