Sauf que tu oublies une précédence que tu utilises sans t'en rendre compte, celle de l'affectation =, car oui, = est un opérateur en C et dans la plupart de ses descendants, avec une précédence qui lui permet d'être exécuté en dernier. Donc, si je suis ton raisonnement, on devrait par exemple écrire :
a = (3 + 4)
Mais personne ne le fait, parce que ça semble naturel à tout le monde que = est en haut de l'arbre d'expression. Donc, pour moi, c'est la même chose avec le reste, il y a des ordres naturels. Si par exemple j'écris l'expression suivante :
2 + 3 * 4 < 10 && 3 >= 3 / 3 - 4 || 5 % 3 == 3
Tout le monde va la parenthéser de la même manière, à savoir :
Et honnêtement, je préfère la première version à celle-ci. Surtout quand dans le même temps, certains font l'apologie de l'absence de parenthèses après le if.
Le seul problème de précédence en C (connu depuis très longtemps) est la précédence de & et |, qui était utilisé pour && et || avant que ces derniers n'apparaissent dans le langage, et qui du coup, ont gardé leur précédence. Ce qui pose problème de nos jours parce qu'on aimerait écrire :
a & mask == b
Mais on ne peut pas, on est obligé de parenthéser l'expression à gauche du ==. Cette erreur n'a jamais été corrigée dans les langages qui descendent du C, comme Java ou PHP.
[^] # Re: Quel avenir?
Posté par rewind (Mastodon) . En réponse au journal Go 1. Évalué à 3.
Sauf que tu oublies une précédence que tu utilises sans t'en rendre compte, celle de l'affectation
=, car oui,=est un opérateur en C et dans la plupart de ses descendants, avec une précédence qui lui permet d'être exécuté en dernier. Donc, si je suis ton raisonnement, on devrait par exemple écrire :Mais personne ne le fait, parce que ça semble naturel à tout le monde que
=est en haut de l'arbre d'expression. Donc, pour moi, c'est la même chose avec le reste, il y a des ordres naturels. Si par exemple j'écris l'expression suivante :Tout le monde va la parenthéser de la même manière, à savoir :
Et honnêtement, je préfère la première version à celle-ci. Surtout quand dans le même temps, certains font l'apologie de l'absence de parenthèses après le
if.Le seul problème de précédence en C (connu depuis très longtemps) est la précédence de
&et|, qui était utilisé pour&&et||avant que ces derniers n'apparaissent dans le langage, et qui du coup, ont gardé leur précédence. Ce qui pose problème de nos jours parce qu'on aimerait écrire :Mais on ne peut pas, on est obligé de parenthéser l'expression à gauche du
==. Cette erreur n'a jamais été corrigée dans les langages qui descendent du C, comme Java ou PHP.