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 geklapptich hab mich auch auf c=a----b bezogen ohne abstand