![]()
Erreurs avec les priorités des opérateurs ![]()
![]()
![]()
![]()
![]()
Suivant: Erreur avec l'instruction switch Début: Le bêtisier Précédent: Erreurs avec les commentaires
Erreurs avec les priorités des opérateurs
Les priorités des opérateurs sont parfois surprenantes. Les cas les plus gênants sont les suivants :
- La priorité des opérateurs bit à bit est inférieure à celle des opérateurs de comparaison.
Le programmeur a écrit il désirait il a obtenu x & 0xff == 0xac
(x & 0xff) == 0xac
x & (0xff == 0xac)
- La priorité des opérateurs de décalage est inférieure à celle des opérateurs arithmétiques.
Le programmeur a écrit il désirait il a obtenu x << 4 + 0xf
(x << 4) + 0xf
x << (4 + 0xf)
- La priorité de l'opérateur d'affectation est inférieure à celle des opérateurs de comparaison. Dans la séquence ci-dessous, très souvent utilisée, toutes les parenthèses sont nécessaire :
while ((c = getchar()) != EOF) { ... }
30/9/1997