Bonjour et bienvenue. Maintenant que nous avons parlé
de tous les principaux opérateurs, des fondamentaux, des étranges, nous devons
parler de ce petit concept de priorité des opérateurs.
Donc, cela entre en jeu essentiellement quand comment évaluez-vous l'ordre de ces opérateurs.
Ainsi, la priorité des opérateurs détermine le regroupement des termes et de l'expression et décide
de la manière dont une expression est évaluée.
Maintenant, vous n'avez vraiment pas besoin de comprendre quoi que
ce soit si vous utilisez des parenthèses auxquelles nous reviendrons dans une seconde, mais vous devez comprendre
ce concept car il fait partie du langage, il fait partie de la compréhension du langage.
La priorité va donc dicter l'ordre d'évaluation lorsque deux
opérateurs partagent un opérande.
Et cela va devenir clair avec un exemple.
Ainsi, par exemple, l'opérateur de multiplication a une priorité plus élevée
que l'opérateur supplémentaire.
Certains opérateurs vont avoir un ordre d'évaluation différent. Donc, si vous deviez faire une instruction
composée où vous
effectuez de nombreux calculs différents, par exemple, 7 plus 3 fois 2.
Cela peut avoir plusieurs
résultats, l'addition et vous faites la multiplication.
Vous devez comprendre est-ce que je dois faire l'addition en premier ou devrais-je faire la multiplication en premier, car en fonction
de ce que vous faites en premier, le résultat change.
Ainsi, par exemple, ce x est égal à 7 plus 3
fois 2, le résultat peut être 13 ou 20 selon
l'ordre dans lequel vous évaluez chaque opérande.
L'ordre d'exécution des différentes opérations peut donc faire une énorme différence.
Et c'est pourquoi vous devez comprendre la préséance.
C fournit des règles spécifiques pour choisir ce qu'il faut faire en premier.
Dans ce cas, je fais la multiplication de plus. Eh bien, c va vous dire ce qui va se passer.
Idéalement, si vous les mettez entre parenthèses, vous lui diriez quoi faire,
vous prendriez cette décision. Mais si vous ne mettez pas cela entre parenthèses,
le langage de programmation prendra la décision à votre place.
Donc, en c, la multiplication aura une priorité plus
élevée que l'opérateur d'addition. Donc, ce qui va se passer, c'est que le résultat sera de 13.
Maintenant, vous pouvez soit dire 7 plus 3, soit 10,
puis multiplier par 2, le résultat serait 20.
Ou vous pouvez faire 7 plus 3 fois 2, soit 7 plus 6, soit 13.
C'est ainsi que vous pouvez avoir des valeurs différentes.
C'est ambigu. Faites-vous d'abord le plus ou faites-vous d'abord la multiplication.
Heureusement, encore une fois, c'est décidé par la langue. Mais vous pouvez voir comment il y a deux résultats différents.
7 plus 3 fois 2
ou 7 plus 3 fois 2. Vous voyez la pause là-bas.
Maintenant c va faire ce dernier. Il va faire la multiplication en premier parce que
cela a une priorité plus élevée.
Donc ça va faire 3 fois 2, ce qui fait 6 et ensuite ça va s'ajouter à 7.
Donc, le résultat x sera 13 parce que l'astérisque en étoile
a une priorité plus élevée que l'addition.
Et il y a donc des règles pour chaque opérateur,
quel opérateur a la priorité sur l'autre.
Il y a un niveau de préséance.
Et la multiplication et la division ont une priorité plus élevée que l'addition et la soustraction.
C'est donc qu'ils sont effectués en premier, par exemple.
Vous pouvez éviter toute cette priorité et laisser la langue décider
pour vous si vous fournissez des parenthèses.
Les parenthèses regrouperont toujours les expressions avec
la priorité la plus élevée. Donc, si je dis 7 plus 3 et que je place cela
entre parenthèses, il va toujours faire l'addition en premier.
Si je dis 3
fois 2 et que je place cela entre parenthèses,
il va toujours faire la multiplication et ensuite ajouter tout ce qui se trouve en dehors des parenthèses.
Vous devriez donc utiliser uniquement des parenthèses. Utilisez toujours des parenthèses.
Sinon, la langue décidera à votre place. Vous devez mémoriser tous les niveaux de préséance,
ce qui est difficile à faire comme je vais vous le montrer dans le tableau suivant.
Il y a beaucoup d'opérateurs différents et vous devez connaître la
priorité de tous ces différents opérateurs.
Cela peut donc devenir très déroutant.
Ceci est similaire à ce que vous savez, soit vous laissez le langage faire une conversion implicite pour
vous, soit vous le faites avec une conversion explicite avec un opérateur de cast,
même type d'idée ici, utilisez simplement des parenthèses.
Donc, si nous regardons ce tableau, que nous examinerons une seconde, je suppose que
je veux d'abord parler d'associativité.
L'associativité est liée à la priorité car ce qui se passe
si deux opérateurs ont la même priorité. Alors, comment déterminez-vous la commande.
Eh bien, vous appliquez l'associativité. Ainsi, chaque fois que les
opérateurs ont le même niveau de priorité, vous appliquez des règles supplémentaires.
L'associativité est donc fondamentalement de savoir si vous commencez ou non
par le côté gauche et allez vers la droite ou la droite vers la gauche.
Donc, si vous partagez un opérande et qu'ils sont tous deux exécutés dans
le même ordre, vous allez les exécuter dans l'ordre de l'instruction
basée sur la règle d'associativité. Ainsi, pour la plupart des
opérateurs, l'ordre est de gauche à droite. Alors laissez-moi vous montrer un exemple.
Si vous dites que 1 est égal à 2 n'est pas égal à
3, les opérateurs égal à égal et non égal à point d'exclamation
égal à égal ont la même priorité.
Donc, dans ce cas, nous avons une ambiguïté. Nous avons un problème.
Nous ne savons pas quoi évaluer en premier. Nous ne savons pas si nous devons faire 1
est égal à 2 ou
2 n'est pas égal à 3 et c'est important parce que vous faites une expression booléenne.
Ceci est une expression booléenne ici, donc les gars reviennent à vrai ou faux.
Donc, ce que vous feriez ici, c'est que vous appliqueriez l'associativité.
L'associativité des égaux égaux et non égaux est de gauche à droite.
Vous allez d'abord faire 1 est égal à 2, ce sera faux.
Et puis vous allez dire faux, ce qui n'est
pas égal à 3,
ce qui n'est pas le cas. Donc 1 est égal à
2 et ce n'est pas égal à 3.
Le résultat sera donc faux. Ainsi, l'expression de gauche est exécutée en premier
et se déplace vers la droite.
Donc, comment vous voulez penser à cela, c'est fondamentalement égal à ces parenthèses.
Tout d'abord, vous allez évaluer qu'un est égal à 2.
Et puis si cela évalue vrai ou faux, vous allez dire est-ce égal à 3.
Et c'est déroutant car il n'a pas
de valeurs vraies ou fausses.
Mais 1 est égal à égal, souvenez-vous que c'est l'opérateur de comparaison, ce n'est pas l'opérateur d'affectation.
Et nous n'utilisons pas de variables ici, donc c'est encore plus déroutant.
Mais si vous deviez mettre ces
nombres dans des variables, vous diriez simplement comme, si x est égal à y,
donc si x était 1 et y était 2, cela donnerait 2 faux.
Parce qu'ils ne sont pas tous les deux égaux. Et puis si 3 était une
autre variable z égale à 3,
vous direz que x est égal à y est faux, z
est égal à 3. Donc faux
n'est pas égal à 3. Ce serait donc faux.
Donc 1 est égal à 2 exécute en premier, résultat à nouveau 0 faux.
Alors 0 n'est pas égal à 3, s'exécute résultant en 1 vrai.
J'ai donc dit faux au départ, mais évidemment 0 n'est pas égal à
3, ce que l'ensemble évaluerait faux.
Le tout serait évalué à vrai, je suis désolé car 0 n'est pas égal à 3.
Donc, 0 n'est pas égal à 3, je disais que c'est faux parce qu'ils ne sont pas égaux,
mais cela signifie qu'il est en fait évalué à vrai.
Tellement joli là-bas. Maintenant, voici notre tableau qui dit toutes
les règles de préséance et d'associativité et il est très difficile de les mémoriser.
Encore une fois, que faites-vous, utilisez des parenthèses.
Mais voici le tableau. Le niveau de priorité le plus élevé est en
haut, de sorte que les opérateurs postfix ont le niveau de préférence le plus élevé.
Et si vous utilisez l'un de ceux-ci dans la même expression, vous lisez
de gauche à droite.
Ainsi, les opérateurs de suffixe, des choses comme les
parenthèses sont la priorité la plus élevée.
Donc, chaque fois que vous incluez quelque chose entre parenthèses, cela entrera en vigueur.
Mais vous avez les crochets et ensuite vous
avez des opérateurs postfix. Nous n'avons pas parlé
de quelques trucs de pointeurs, qui sont ce tiret plus grand que, mais
nous connaissons maintenant les plus plus et moins
moins qui sont des suffixes, ceux
qui ont la priorité la plus élevée. Opérateurs unaires, comme le plus moins, le
point d'exclamation pour non, le tilde pour le bit, le plus plus le
moins moins, puis l'opérateur de conversion est appelé un opérateur unaire car il n'a qu'un seul opérande.
Et puis l'opérateur astérisque est l'opérateur pointeur. L'esperluette correspond au bit et à
la taille.
Celles-ci ont la deuxième priorité la plus élevée.
Mais ici, vous lisez en fait de droite à gauche
une évaluation si vous en avez deux sur la même instruction d'état de ligne.
Et là encore, nous allons simplement dans les ordres. Vous devez connaître cet ordre et le mémoriser. Tellement difficile à faire, mais je
voulais vous le montrer, je voulais juste avoir
une petite illustration pour montrer certains des tableaux. Il y a beaucoup d'opérateurs.
Et donc il y a beaucoup de niveaux de présence, et il y a l'associativité pour la plupart comme nous l'avons
dit plus tôt est de gauche à droite.
Vous n'avez que l'associativité de droite à gauche pour les opérateurs unaires.
Ainsi, les opérateurs au niveau du bit suivent vers le bas,
tous de gauche à droite. Opérateurs ternaires conditionnels de droite à gauche.
Les opérateurs d'affectation sont toujours en bas. C'est toujours évalué en dernier.
Et puis s'ils sont égaux, les autres là-bas, vous évaluez de droite à gauche.
Et puis la virgule est également appelée opérateur. C'est de gauche à droite.
Un autre concept de préséance et d'associativité
que nous n'allons pas vraiment aborder
avec ces autres exemples. Nous allons finir par utiliser les parenthèses
tout le temps, et c'est ce que vous voulez faire.
Mais encore une fois, si vous voulez bien comprendre la langue, vous voulez comprendre ces concepts c'est pourquoi je vous le dis.
Personne ne peut prétendre connaître la langue s'il ne connaît pas certains détails comme celui-ci.
Mais utilisez autant que possible les parenthèses. Merci.