Logelei (j++)



  • Sckøøl Danke und zustimm Schøøl



  • Original erstellt von DaDaywalker:
    Um deine Frage zu beantworten es kommt auf die genaue schreibweise an!

    exakt!



  • Kleine Denkaufgabe (aber auch nicht so wild):
    Was würde mit den Initialisierungen von "a=1;" und "b=2;" bei c=a----b herauskommen? 😉



  • [ Dieser Beitrag wurde am 16.05.2003 um 21:56 Uhr von volkard editiert. ]



  • Original erstellt von RTC:
    Kleine Denkaufgabe (aber auch nicht so wild):
    Was würde mit den Initialisierungen von "a=1;" und "b=2;" bei c=a----b herauskommen? 😉

    einen syntaxfehler.
    naja der kompiler macht das ganze zu:
    c=(a--)-- b;
    weil posdektrement den höchsten rang hat.
    und dann ist:
    1. a-- keine lvalue d.h. der zweite -- ist illegal
    2. steht das b einfach in der landschaft und es fehlt ein operator davor.

    [ Dieser Beitrag wurde am 16.05.2003 um 22:14 Uhr von japro editiert. ]



  • Original erstellt von japro:
    **
    naja der kompiler macht das ganze zu:
    c=(a--)-- b;
    **

    Hast natürlich recht. Eigentlich wollte ich schreiben:

    c=a--- -b;
    

    was ja dann geht! c= a-- - --b; ist auch ganz nett...



  • Original erstellt von japro:
    [quote]Original erstellt von RTC:
    [qb]Kleine Denkaufgabe (aber auch nicht so wild):
    Was würde mit den Initialisierungen von "a=1;" und "b=2;" bei c=a----b herauskommen? 😉

    einen syntaxfehler.
    naja der kompiler macht das ganze zu:
    c=(a--)-- b;
    weil posdektrement den höchsten rang hat.[/QB][/QUOTE]

    Richtiges Ergebnis, falsche Begründung. Zu dem Zeitpunkt, wo der Quelltext in Präprozessor-Tokens übersetzt wird, hat die Rangfolge der Operatoren noch keinerlei Bedeutung. Der Standard sagt einfach aus:
    "If the input stream has been parsed into preprocessing tokens up to a given character, the next preprocessing token is the longest sequence of characters that could constitute a preprocessing token." (ISO/IEC 9899:1999, 6.4-3)
    Diese werden dann 1-zu-1 in Token umgewandelt:
    "Each preprocessing token is converted into a token. The resulting tokens are syntactically and semantically analyzed and translated as a translation unit." (ISO/IEC 9899:1999, 5.1.1.2-7)
    Der Übersetzer erstellt also folgende Tokenfolge:
    c = a -- -- b
    was ein Syntaxfehler ist.



  • also mein kompiler (gcc) hat gefunden es fehle ihm ein lvalue 🙂



  • @japro: bei "c=a--- -b;" ??? Also bei mir und mit dem gcc hat's geklappt 🙄



  • Original erstellt von RTC:
    @japro: bei "c=a--- -b;" ??? Also bei mir und mit dem gcc hat's geklappt 🙄

    ich hab mich auch auf c=a----b bezogen ohne abstand


Anmelden zum Antworten