195Fermer197
SallyLe 15/11/2010 à 14:05
Folco (./193) :
*(truc*)Ptr
Euh oui enfin quand ce ne sont que des opérateurs unaires qui se mettent du même côté la question de la priorité ne se pose pas en fait hein ^^. L'étoile ne peut pas s'appliquer à juste (truc*) puisque ce n'est pas un opérande, donc obligatoirement elle s'applique à l'ensemble (truc*)Ptr.

Pour qu'il y ait une question de priorité il faudrait qu'il y ait des opérateurs des deux côtés, par exemple *(truc*)Ptr++, là effectivement ça pourrait vouloir dire : (*((truc*)Ptr)++ ou bien *(truc*)(Ptr++) ou bien *(((truc*)Ptr)++)

On remarque en passant que si ça devient rapidement illisible, c'est en grande partie grâce à l'idée géniale consistant à utiliser les parenthèses pour écrire l'opérateur de cast alors qu'elles servent déjà à indiquer le groupement, ça c'est une des merveilles du C (merveilleusement reprise en java aussi d'ailleurs, comme la plupart des aberrations syntaxiques du C...)

Sinon il y a quelques priorités contre-intuitives (genre >> qui a une priorité super faible) et dans le doute ça va plus vite de surparenthéser que d'aller voir la doc ou de faire des tests ^^. Mais si tu les connais bien effectivement c'est pas nécessaire smile