atoi funktion selber gemacht
-
int atoi(char* x) { int var=0; for(int i=0;x[i];i++) { var=var*10+x[i]-'0'; // Frage dazu } return var; }warum brauch ich das '0' ??
wenn ich cout<<x[0]; mache kommt doch auch die richtige Zahl;
-
Mach mal
cout << static_cast<int>(x[0]);und du weisst, warum.

-
blurry333 schrieb:
wenn ich cout<<x[0]; mache kommt doch auch die richtige Zahl;
aber du gibts immer och nen text aus und keine zahl
blurry333 schrieb:
warum brauch ich das '0' ??
-
Kann ich ja gleich so casten oder
std::cout << (int)(x[0]);und hier ist es dasselbe
int zahl=(int)x[0];
-
oder wolltest du mir sagen es wird bei der Zuweisung implizit gecastet ??

-
Ich verwende lieber C++- als C-Casts, weil sie sicherer und im Code besser erkennbar sind.
Ich wollte damit sagen, dass
couteinencharzunächst als Zeichen ausgibt. Wenn du ihn als Zahl ausgeben willst (mit dem Cast zuint), wirst du nicht das erwünschte Verhalten sehen.
-
ist trotzdem eine interpretationssache.
cout gibt ihn als Zeichen aus, weil es wohl auch so erwünscht ist.
Bei einer zuweisung erkennt der Compiler dass der char einem int
zugewiesen werden soll und da würde es ja keinen Sinn machen z.B.
den Buchstaben A einem int zu zuweisen. Da könnte höchstens eine
Fehlermeldung kommen. Der Compiler ist aber schlau genug und
erkennt dass es ein int ist
-
zzzz schrieb:
ist trotzdem eine interpretationssache.
cout gibt ihn als Zeichen aus, weil es wohl auch so erwünscht ist.
Bei einer zuweisung erkennt der Compiler dass der char einem int
zugewiesen werden soll und da würde es ja keinen Sinn machen z.B.
den Buchstaben A einem int zu zuweisen. Da könnte höchstens eine
Fehlermeldung kommen. Der Compiler ist aber schlau genug und
erkennt dass es ein int ist
Mitnichten.
charist ein skalarer Typ, sprich'A'kann sehr wohl einemintzugewiesen werden (das wäre dann 65). Und'0'bis'9'entspricht 48 bis 57. Um also'5'in 5 umzuwandeln, muss man'5'-'0'rechnen, also 53 - 48 = 5.
-
ich sag ja es macht keinen Sinn den Buchstaben A zu zuweisen sondern
eben den ASCII WERT
-
Es wird aber der Buchstabe zugewiesen bzw. es gibt keine Unterscheidung zwischen Buchstaben und ASCII-Wert. 'A' und 65 verhält sich in etwa so wie 15 und 0xF.