Sichere Typumwandlung?
-
Hey C++ler,
ich arbeite grade an einem kleinen Projekt. Hierbei möchte ich eine Typumwandlung vornehmen. Da es ja sichere und unsichere typumwandlungen gibt, habe ich mich in einer Fachlektüre vergewissert ob es sich von char nach integer um eine sichere handele. Laut Buch ja.
Ich habe die Umwandlung mal im kleinen getestet:
#include "../../../std_lib_facilities.h" #include "conio.h" int main() { int z; char s; cin>>s; z = s; cout<<z; getch(); }Doch die Ausgabe am Ende sieht ganz und garnicht sicher aus!!! Bei der Eingabe '2' , wird die Ausgabe '50' erzeugt....Was läuft da schief, ist also char->integer doch nicht sicher?
-
Wenn du chars einliest, dann werden auch chars (=Zeichen) eingelesen, keine Zahlen. Wenn du dann Zeichen in Zahlen umwandelst, dann wird der Zahlwert des Zeichens genommen. Das Zeichen für '2' hat bei dir wohl den Zahlenwert 50.
-
SeppJ schrieb:
hat bei dir wohl den Zahlenwert 50.

http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
-
Hacker schrieb:
SeppJ schrieb:
hat bei dir wohl den Zahlenwert 50.

http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
-
Okay, aber wie schaffe ich es, dass der char Inhalt eins zu eins zu einem integer inhalt umgewandelt wird?
-
Zieh einfach den ASCII Wert von '0' ab:
c -= '0';
-
Danke @all

echt klasse wie schnell einem hier geholfen wird!
-
P.S.: Man könnte hier auch, bei mehrstelligen Zahlen die Zahl zum String umwandeln lassen.
Edit: Sorry, ich meinte andersherum.