gibt es i+++ in C ?

18/01/2013 - 14:28 von bernhartdiener | Report spam
Hallo allerseits,
1)
in BNF habe ich entdeckt:

postfix_exp: primary_exp
| postfix_exp '[' exp ']'
| postfix_exp '(' argument_exp_list ')'
| postfix_exp '(' ')'
| postfix_exp '.' id
| postfix_exp '->' id
| postfix_exp '++'
| postfix_exp '--'

Das bedeutet, dass z.B. so etwas wie folgendes syntaktisch moeglich
ist:

-
int i;
i=0;
i++;
i++++;
i++++++:
i++++++++;

Habe ich recht, oder wo ist mein Denkfehler?

2)
Wenn ich dieses o.g. Programmteil mit einem C-plus-plus Compiler
uebersetze,
meldet der Compiler einen Fehler. Er versteht nicht:
i++++;
i++++++:
i++++++++;

Warum ?

mfg
Bh
 

Lesen sie die antworten

#1 bernhartdiener
18/01/2013 - 15:22 | Warnen spam

postfix_exp: primary_exp
| postfix_exp '[' exp ']'
| postfix_exp '(' argument_exp_list ')'
| postfix_exp '(' ')'
| postfix_exp '.' id
| postfix_exp '->' id
| postfix_exp '++'
| postfix_exp '--'

Das bedeutet, dass z.B. so etwas wie folgendes syntaktisch moeglich
ist:
-
int i;
i=0;
i++;
i++++;
i++++++:
i++++++++;
Habe ich recht, oder wo ist mein Denkfehler?



mantisch ist es auf jeden Fall *nicht* moeglich, da i++ keinen modifiable
L-Value zurueckliefert und damit darauf der ++ operator genausowenig ange-
wendet werden kann wie auf eine numerische Konstante ...



Danke fuer deine Antwort,
Warum erlaubt es aber BNF?
Warum ist es daher syntaktisch moeglich ?

mfg
Bh

Ähnliche fragen