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' ??

    Google: ascii tabelle



  • 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 cout einen char zunächst als Zeichen ausgibt. Wenn du ihn als Zahl ausgeben willst (mit dem Cast zu int ), 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. char ist ein skalarer Typ, sprich 'A' kann sehr wohl einem int zugewiesen 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.


Anmelden zum Antworten