[Anfänger] atoi() ergibt immer 0



  • dddrdr schrieb:

    char c='g'; // kein string, sondern ein Zeichen (beachte ')
    

    Hoppla, das passiert, wenn man nicht aufpasst. Na dann kommt auch das richtige Ergebnis raus.


  • Mod

    Firebird1 schrieb:

    dddrdr schrieb:

    char c='g'; // kein string, sondern ein Zeichen (beachte ')
    

    Hoppla, das passiert, wenn man nicht aufpasst. Na dann kommt auch das richtige Ergebnis raus.

    Siehste. Denn ein Zeichen ist technisch gesehen auch ein Zahl, es ist also kein Problem, einer Zahl ein Zeichen zuzuweisen. Man kann auch ganz normal mit Zeichen rechnen. Beispielsweise benutzt man gerne den Fakt, dass '0' + 1 == '1' ist, usw. (beachte, dass '1' das Zeichen für die Ziffer Eins ist, wohingehen 1 die Zahl Eins ist).

    Eine Zeichenkette ist aber natürlich kein Zeichen, da geht das nicht.

    PS: Und eine andere Sache, die du daran siehst, dass du es oben versehentlich falsch gemacht hast: C ist ziemlich gnadenlos. Ein falsches Zeichen und ein Programm macht etwas völlig anderes als geplant. Fast alles ist irgendwie gültiges C, daher beschwert sich der Compiler selten. Daher muss man ganz genau aufpassen, immer genau das zu schreiben, was man meint, und nicht etwas, das nur so ähnlich aussieht.



  • SeppJ schrieb:

    Fast alles ist irgendwie gültiges C, daher beschwert sich der Compiler selten.

    Wenn man die Warnungen beim Compiler aktiviert und auch den Warnlevel entsprechend setzt, mosert der Compiler immerhin rum, dass etwas nicht so ganz sauber ist.

    Und diese Warnungen sollte man ernst nehmen.
    D.h deren Ursache beseitigen.


Anmelden zum Antworten