• Expressions en C++. Priorité des opérateurs Une expression est une combinaison d'opérandes /valeurs, constantes, variables, appels de fonctions (standardes ou définies par le programmeur), d'opérateurs et de parenthèses/ ( ) ou [ ] / qui est évaluée pour donner comme résultat une valeur. L'évaluation d’une expression a lieu selon l'ordre de priorité des opérateurs et les règles associatives. Tableau 3.
Les opérateurs situés à la même ligne ont la priorité égale. Pour les opérateurs unaires ayant une priorité égale, évaluation de droite à gauche. Pour les opérateurs binaires ayant priorité égale, évaluation de gauche à droite. Exception pour les opérateurs =, + = , - = , * =, / =. Ils sont évalués de droite à gauche. Il est préférable, en général, d'utiliser les parenthèses pour rendre explicite l'ordre dans lequel les opérations doivent s'effectuer. Cela facilite la lecture du programme et diminue les erreurs. Les opérateurs unaires * et & sont utilisés avec des pointeurs. Les fonctions peuvent être opérandes dans les expressions. Quelques fonctions, le plus souvent utilisées sont données dans le Tableau 4. Pour utiliser ces fonctions dans votre programme, vous devrez placer en en-tête la directive : #include < math.h >. Tableau 4.
On doit considérer le type du paramètre et le type du résultat d’une fonction. Par exemple, les fonctions fabs(double x) et abs(int x) donnent des résultats differents: cout << abs(-5.8); // affiche 5 cout << fabs(-5.8); // affiche 5.8 Quelques fonctions reliées au type char sont données dans le Tableau5. Elles sont définies dans le fichier ctype.h. Tableau 5.
• Conversion du type implicite Les expressions peuvent contenir des opérandes de types différents - int, double, float, bool etc. En langage C++ se fait une conversion automatique de type des opérandes. Sans perte d’information s’exécutent les conversions suivantes: bool -> int short int -> int unsigned short int -> unsigned int float -> double Le principe de la conversion implicite est le suivant: du type occupant un plus petit mémoire en type occupant plus de mémoire. Dans ce cas il n’y a pas de perte d’information. |