6
votes

Opérateurs en C / C ++ / Java

Considérez le fragment suivant:

int a,b;
a = 1;
b = 2;

c = a++++b; // does not work!! Compilation error.
c = a++*+b; // works !!


2 commentaires

"Ne fonctionne pas" est inactilement vague. Il suppose qu'il existe une sortie attendue qui représente des «travaux» et une production réelle qui représente «ne fonctionne pas» et vous n'avez pas été fournies non plus.


À quoi ça sert?


5 Réponses :


31
votes
c = a++ + +b;  
c = a++ * +b;  

0 commentaires

7
votes

Ceci est effectivement à cause de " règle de munch maximale " dans C.

c = a++*+b;


1 commentaires

Merci Alok pour avoir donné la référence et l'explication.



0
votes

PRECÉDENCE DE L'OPLOIRE . ++ a une priorité élevée que binaire +.


3 commentaires

Je ne vois pas comment cela pourrait être la priorité de l'opérateur.


c = a ++ + + b; C'est bien, mais si vous retirez les espaces blancs, il s'avère qu'une erreur de lvalue invalide.


Je suppose que j'ai mal compris le problème. Merci pour l'explication.



0
votes

0 commentaires

0
votes

La même raison pour laquelle nous obtenons une erreur dans le C ++ pour:

vector<vector<int>>;


1 commentaires

Bon point, mais n'est pas lié à la question de l'OP.