Frage zu strchr()



  • Heyo,

    ich habe eine Frage zu folgendem Beispiel:

    /* strchr.c */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main(void) {
       char str[] = "Ein String mit Worten";
       printf("%s\n",strchr(str, (int)'W'));
       return EXIT_SUCCESS;
    }
    

    Wieso wird ncoh ein (int) vor das 'W' geschrieben??? Ich habe es mal rausgelassen, dann funnktioniert es auch...
    im Buch wird nicht darauf eingegangen... hat das eine tiefere Bedeutung? 🙂

    Greez

    Haimi



  • Nein.

    Eigentlich ist das auch Unsinn. Gesucht wird ein char (ein 8-Bit Wert).
    Keine Integer.



  • OK thx 🙂

    Seltsame Sache da im Buch... aber wenn es eh keinen Sinn macht... mache ich mir wohl keine Gedanken mehr darüber... 🙂



  • Es ist halt so: Eigentlich sollte der Funktion eine int übergeben werden, sie
    sucht aber trotzdem einen 8-Bit-Wert. Es hängt vom Prozessor und dem OS ab, was
    mit einer int eigentlich gemeint ist. Die gibt es aktuell von 8 bis 64 Bit,
    die Esoteriker haben noch mehr. Im Zweifelsfall mal den Compiler nach sizeof(int)
    fragen.



  • Der Cast ist total sinnfrei weil 'W' in C eh schon vom Typ int ist.

    (In C++ wäre es om Typ char)



  • Scheppertreiber schrieb:

    Es hängt vom Prozessor und dem OS ab, was
    mit einer int eigentlich gemeint ist. Die gibt es aktuell von 8 bis 64 Bit,
    die Esoteriker haben noch mehr.

    int hat mindestens 16 Bit.



  • Tim schrieb:

    Scheppertreiber schrieb:

    Es hängt vom Prozessor und dem OS ab, was
    mit einer int eigentlich gemeint ist. Die gibt es aktuell von 8 bis 64 Bit,
    die Esoteriker haben noch mehr.

    int hat mindestens 16 Bit.

    Nein. Hängt vom Prozzi ab.



  • Scheppertreiber schrieb:

    Tim schrieb:

    Scheppertreiber schrieb:

    Es hängt vom Prozessor und dem OS ab, was
    mit einer int eigentlich gemeint ist. Die gibt es aktuell von 8 bis 64 Bit,
    die Esoteriker haben noch mehr.

    int hat mindestens 16 Bit.

    Nein. Hängt vom Prozzi ab.

    Nein. Laut C-Standard ist ein int mindestens 16 Bit breit.



  • Scheppertreiber schrieb:

    Nein. Hängt vom Prozzi ab.

    nein 16 bit. tim hat recht. deshalb sind auf manchen 8-bitter operationen mit 'int' um einiges langsamer als mit 'char'.
    🙂



  • Ich hatte mal einen Crosscompiler für den 6502 ... Da waren es 8 🙂



  • Scheppertreiber schrieb:

    Ich hatte mal einen Crosscompiler für den 6502 ... Da waren es 8

    der kam wohl aus der vor-ansi zeit.
    🙂



  • Weiß ich nicht mehr. Ich hatte damals selbstgebaute Rechner mit dem 6502
    (immer noch mein Lieblingsprozessor) damit programmiert. Der hatte auch so
    angehauchte 16 Bit Ops.

    Ist halt so wenn man mit Maschinencode, dann Assembler und dann zu C kommt.

    Prinzipiell ist aber eine int in etwa die "Bandbreite" des Prozessors. Das
    muß nicht bei allen Prozessoren gleich sein. Bei strchr() will er das halt mit
    8 Bit (zumindest in C und ASCII/Ansi-Codierung).



  • Scheppertreiber schrieb:

    (immer noch mein Lieblingsprozessor)

    ein 6502-derivat war mein erster kontakt mit computern (der, der im c64 steckte). war schon, für die damalige zeit, ein sehr cooles teil.

    Scheppertreiber schrieb:

    Prinzipiell ist aber eine int in etwa die "Bandbreite" des Prozessors.

    unterhalb von 16 bits gilt das leider nicht, wenn der compiler ansi-kompatibel sein will.
    🙂



  • Gab es damals schon "ANSI-komplatibel" ? Und hätte das jemand ernsthaft interessiert ?
    "Kompatibel" war eigentlich mehr ein "Schimpfwort". Ist die Schweinsgrippe
    kompatibel zu Windoof ?



  • OT: ueber den 6502 in Bender http://www.spectrum.ieee.org/may09/8849 🙂



  • rüdiger schrieb:

    OT: ueber den 6502 in Bender http://www.spectrum.ieee.org/may09/8849 🙂

    wie geil, das ist mir nie aufgefallen 🙂



  • rüdiger schrieb:

    OT: ueber den 6502 in Bender http://www.spectrum.ieee.org/may09/8849 🙂

    Netter Artikel ... 6502 war der einzige uC wo man Assembler aus dem
    Flußdiagramm schreiben konnte, genialer schwarzer Käfer.



  • rüdiger schrieb:

    OT: ueber den 6502 in Bender http://www.spectrum.ieee.org/may09/8849 🙂

    ^^lustig. da gibt's so'n bekloppten film mit dem noch bekloppteren kalifornischen governor, namens 'terminator' (erster teil), da scrollt in einer szene 6502 assembler-code vor seinem geistigen auge hoch.
    🙂



  • +fricky schrieb:

    rüdiger schrieb:

    OT: ueber den 6502 in Bender http://www.spectrum.ieee.org/may09/8849 🙂

    ^^lustig. da gibt's so'n bekloppten film mit dem noch bekloppteren kalifornischen governor, namens 'terminator' (erster teil), da scrollt in einer szene 6502 assembler-code vor seinem geistigen auge hoch.
    🙂

    hehe, jo
    http://www.pagetable.com/?p=64


Log in to reply