Après avoir analysé les variables et constantes dans le chapitre précédent, le but de ce chapitre est de voir comment combiner les variables et constantes mentionnées pour former des expressions.
Dans le langage C, un opérateur est utilisé pour représenter une opération. La combinaison de variables et/ou constantes avec les agents donne lieu à des expressions consistant en une ou plusieurs expressions, combinées avec les agents, dans une commande. Il y a beaucoup plus que les opérateurs = (allocation) + (addition) – (soustraction) et * (multiplication) que nous avons utilisé dans les programmes des chapitres précédents. Avant d'analyser un par un, nous analyserons deux caractéristiques principales des agents : la priorité et la compatibilité.
Quand il y a plus d'un agent dans une expression, l'ordre d'évaluation dépend de la priorité des agents. Les opérations les plus prioritaires sont effectuées en obtenant les premiers résultats de travail. Par la suite, et suivant l'ordre décroissant de priorité, les agents suivants s'appliquent sur les résultats de travail antérieurs. Les parenthèses, comme dans d'autres langages, modifient l'ordre de l'évaluation. Par exemple, l'évaluation de 2 + 3 * 4 génère 14 parce que la multiplication a un degré de priorité supérieur à la somme.
La convergence nous dit comment l'évaluation est effectuée, de gauche à droite ou vice versa. Par exemple, pendant que l'opérateur a la bonne compatibilité gauche, les opérateurs arithmétiques courants (+, –, *) ont la de gauche à droite.
a = b = c
est évalué par la droite. Donc, b premier et a après prennent la valeur de c.
a + b - c
au contraire, il sera évalué de gauche à droite. Le tableau 1 montre les agents les plus pertinents et leur compatibilité par ordre de priorité.
Nous allons analyser les agents qui apparaissent dans la table.
Comme on peut le voir dans le tableau 2, en marge des opérations habituelles, deux autres sont présentées, l'augmentation et le décrément. Dans les deux cas, l'attribution se produit et, bien qu'ils puissent être exprimés autrement, ils ont été introduits dans le langage C par souci de confort et d'efficacité, parfois difficiles à lire les programmes.
Il convient de noter l'existence d'un seul agent pour la division, à la fois totale et réelle (en face du PASCAL, div et / ou opérateurs diffèrent). Si les opérandes sont complètes, le résultat sera celui de la totalité de la division et dans le reste le réel (voir tableau 3).
Le module, l'opérateur%, ne peut être utilisé qu'avec des opérandes complètes.
Exemple :
Condition numéro par (x 2%) = = Ø
Parmi les caractéristiques du langage C se trouve la capacité de capture de bits, pour laquelle on dispose des agents décrits dans le tableau 4. Comme on le sait, l'opération AND est utilisée pour mettre plusieurs bits en Ø, pour mettre l'opération OR en état 1 et changer l'état xor (bits). Pour ce faire, on associe une variable type caractère (8 bits), short (16 bits) ou long (32 bits) avec un masque indiqué en hexadécimal (préfixe Øx). Les bits que vous voulez conserver dans le masque sont assignés à la valeur Ø et à ceux qui veulent mettre dans un (OR) ou changer (XOR) la valeur. L'opération AND est inversée et l'opérateur peut l'utiliser.
Par exemple, si la variable n est composée de 8 bits (sans connaître sa valeur) et est placée sur un bit à gauche, elle est mise à zéro à droite et on veut changer les deux centrales, il faut :
n = n Øx8Ø n = n ( ØxØ1) n = n^ Øx18 | /* n ?ó /* n ?ó /* n /* n ?ó | xxxx xxxx */ 1xxx xxxx */ 1xxx xxx Ø */ 1xxx– x–xxØ */ |
Les déplacements servent surtout à utiliser la gestion des bits dans des structures répétitives, comme nous le verrons au chapitre 5.
Les opérateurs relationnels sont principalement utilisés pour représenter les conditions (voir tableau 5). Dans tous les cas, le langage C peut être n'importe quelle condition d'expression; l'attribution, ...
Quand une expression non relationnelle est condition, l'évaluation de l'expression est considérée comme fausse quand Ø est et dans le reste des cas comme vraie. Par conséquent, il faut faire très attention à la relation d'égalité, car il est très facile de mettre = = au lieu de = (allocation), comme cela est fait dans d'autres langages. Par conséquent, le résultat de la condition à vérifier dépendra de la valeur assignée.
int n = Ø
if (n=Ø) /* toujours faux, puisque l'allocation est */ if (n = Ø) /* dans ce cas le vrai est n Ø ya */
Il convient de noter que les chaînes de caractères ne peuvent pas être combinées avec les opérateurs observés, car les chaînes de caractères ne sont pas des données de base (voir chapitre 7).
Ces agents ont beaucoup à voir avec les structures de données et les démonstrateurs et seront approfondis au chapitre 7 (voir tableau 6).
Ces agents combinent une opération avec l'assignation, étant le résultat et l'opérant 1 toujours la même variable. On peut ainsi remplacer x=x+par x+= a, x=x 3 par x =3 etc.
Ces agents sont:
+= % = = | –= = = = | *= | /= |