'/0' == 0?



  • im C99 Standard steht unter 6.4.4.4
    octal-escape-sequence:
    \ octal-digit
    \ octal-digit octal-digit
    \ octal-digit octal-digit octal-digit

    d. h. unter C99 ist \0 einfach die Oktalzahl 0, was dem Integerwert 0 entspricht... mmh... warum schreibt man dann im Code immer folgendes:

    char Nullterminierung = '\0';
    

    und nicht einfach

    char Nullterminierung = \0;
    

    gibt es in dieser Beziehung unterschiede zwischen C und C++?



  • borg schrieb:

    wenn \0 als oktal 0 interpretiert werden würde, wäre '\0' == '0'. also ist \0 doch wohl eine ausnahme?

    Nö. '0' ist '\060'.

    Vertexwahn: Eine Umwandlung nach char entfällt. Beachte, dass \0 ein int ist.



  • char Nullterminierung = '\0';
    

    dann macht man die Hochkommas nur zur besseren lesbarkeit?

    ist dann

    '\12'
    

    das gleiche wie

    \12
    

    ?



  • Michael E. schrieb:

    borg schrieb:

    wenn \0 als oktal 0 interpretiert werden würde, wäre '\0' == '0'. also ist \0 doch wohl eine ausnahme?

    Nö. '0' ist '\060'.

    jo, das wollt ich damit sagen 🙂
    daraus schlussfolgere ich das entweder \0 nicht als oktal 0 interpretiert wird oder das '\0' eine spezielle ausnahme ist.



  • Bashar schrieb:

    borg schrieb:

    \0 ist ein einzelnes zeichen wie es a oder \n ist (hat nix mit oktalzahlen zu tun).

    Doch.

    aber nicht '\n'. das ist eine sogenannte 'escape-sequenz' wie auch \’ \" \? \\
    \a \b \f \r \t \v usw...



  • borg schrieb:

    wenn \0 als oktal 0 interpretiert werden würde, wäre '\0' == '0'.

    Ich hoffe, du stimmst mit mit darin überein, dass '\1' oktal interpretiert wird? Und auch darin, dass das nicht '1' ist?

    Also bitte vor dem Posten Gehirn einschalten. Danke.



  • Vertexwahn schrieb:

    char Nullterminierung = '\0';
    

    dann macht man die Hochkommas nur zur besseren lesbarkeit?

    Nein, weil es anders kein char-Literal ist.

    ist dann

    '\12'
    

    das gleiche wie

    \12
    

    ?

    Nein, letzteres ist ein Syntaxfehler. '\12' ist aber das gleiche wie 012 (wenn man mal davon absieht das die Typen unterschiedlich sind.)



  • net schrieb:

    aber nicht '\n'. das ist eine sogenannte 'escape-sequenz' wie auch \’ \" \? \\
    \a \b \f \r \t \v usw...

    \0 ist auch eine Escape-Sequenz 🙄

    Was ist eigentlich mit euch los heute?



  • in der C Bibel (K&R) steht, dass '\0' == 0 == \0 ist und das '\0' zur besseren Lesbarkeit eingeführt wurde

    was der aktuelle C Standard zu '\0' bzw. der C++ Standard dazu sagt weiß ich nicht



  • Vertexwahn schrieb:

    was der aktuelle C Standard zu '\0' bzw. der C++ Standard dazu sagt weiß ich nicht

    z.b. das:

    A byte with all bits set to 0, called the null character, shall exist in the basic execution character set; it is used to terminate a character string.

    die sehen das auch so, also '\0' == 0



  • Vertexwahn schrieb:

    in der C Bibel (K&R) steht, dass '\0' == 0 == \0 ist und das '\0' zur besseren Lesbarkeit eingeführt wurde

    Kannst du das mal kurz zitieren bitte, ich hab das Buch gerade nicht bei der Hand (ich nehme aber an, dass mir das aufgefallen wäre)

    Ich muss mich Bashar aber anschließen -> ein sehr komischer Thread



  • net schrieb:

    Vertexwahn schrieb:

    was der aktuelle C Standard zu '\0' bzw. der C++ Standard dazu sagt weiß ich nicht

    z.b. das:

    A byte with all bits set to 0, called the null character, shall exist in the basic execution character set; it is used to terminate a character string.

    die sehen das auch so, also '\0' == 0

    Nein. Schlicht und einfach: Nein!



  • Michael E. schrieb:

    Nein. Schlicht und einfach: Nein!

    doch, das steht da: n843.pdf, programming languages -- c
    meinste die flunkern?



  • mit impliziter Typumwandlung isses dasselbe...



  • net schrieb:

    Michael E. schrieb:

    Nein. Schlicht und einfach: Nein!

    doch, das steht da: n843.pdf, programming languages -- c
    meinste die flunkern?

    Guck mal, was ich hervorgehoben habe.

    PunI$0R schrieb:

    mit impliziter Typumwandlung isses dasselbe...

    Es geht hier aber nicht darum, wie das nach Umwandlungen aussieht.



  • Michael E. schrieb:

    Guck mal, was ich hervorgehoben habe.

    hehe, und hast dabei meine hervorhebung weggemacht 😃
    also 'A byte with all bits set to 0' ist ja wohl 0. nulliger geht's nicht



  • Es geht aber nicht nur um den Inhalt, sondern auch um den Typ!


Anmelden zum Antworten