C Opérateurs
Un opérateur est un symbole qui indique au compilateur d'effectuer des opérations mathématiques ou logiques spécifiques. Le langage C dispose d'un riche ensemble d'opérateurs intégrés et fournit les types d'opérateurs suivants :
- Opérateurs arithmétiques
- Opérateurs relationnels
- Opérateurs logiques
- Opérateurs bit à bit
- Opérateurs d'affectation
- Opérateurs divers
Ce chapitre présentera un par un les opérateurs arithmétiques, relationnels, logiques, bit à bit, d'affectation et autres opérateurs.
Opérateurs arithmétiques
Le tableau suivant montre tous les opérateurs arithmétiques pris en charge par le langage C. Supposons que la variableAa une valeur de 10, la variableBa une valeur de 20, alors :
| Opérateurs | Description | Exemple |
|---|---|---|
| + | Additionne deux opérandes. | A + B donnera 30 |
| - | Soustrait le second opérande du premier opérande. | A - B donnera -10 |
| * | Multiplie deux opérandes. | A * B donnera 200 |
| / | Numérateur divisé par dénominateur | B / A donnera 2 |
| % | Opérateur modulo, le reste après une division entière. | B % A donnera 0 |
| ++ | Opérateur d'incrémentation, augmente la valeur entière de 1. | A++ donnera 11 |
| -- | Opérateur de décrémentation, diminue la valeur entière de 1. | A-- donnera 9 |
Exemple
Voir l'exemple suivant pour apprendre tous les opérateurs arithmétiques disponibles en C :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Line 1 - c 的值是 31 Line 2 - c 的值是 11 Line 3 - c 的值是 210 Line 4 - c 的值是 2 Line 5 - c 的值是 1 Line 6 - c 的值是 21 Line 7 - c 的值是 22
L'exemple suivant illustre la différence entre a++ et ++a
Exemple
La sortie de l'exécution du programme ci-dessus est :
先赋值后运算: Line 1 - c 的值是 10 Line 2 - a 的值是 11 Line 3 - c 的值是 10 Line 4 - a 的值是 9 先运算后赋值: Line 5 - c 的值是 11 Line 6 - a 的值是 11 Line 7 - c 的值是 9 Line 8 - a 的值是 9
Opérateurs relationnels
Le tableau suivant présente tous les opérateurs relationnels pris en charge par le langage C. Supposons que la variableAa une valeur de 10, que la variableBa une valeur de 20, alors :
| Opérateurs | Description | Exemple |
|---|---|---|
| == | Vérifie si les valeurs de deux opérandes sont égales. Si elles sont égales, la condition est vraie. | (A == B) est faux. |
| != | Vérifie si les valeurs de deux opérandes sont égales. Si elles ne sont pas égales, la condition est vraie. | (A != B) est vraie. |
| > | Vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit. Si c'est le cas, la condition est vraie. | (A > B) est faux. |
| < | Vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit. Si c'est le cas, la condition est vraie. | (A < B) est vraie. |
| >= | Vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit. Si c'est le cas, la condition est vraie. | (A >= B) est faux. |
| <= | Vérifie si la valeur de l'opérande gauche est inférieure ou égale à la valeur de l'opérande droit. Si c'est le cas, la condition est vraie. | (A <= B) est vraie. |
Exemple
Voir l'exemple suivant pour découvrir tous les opérateurs relationnels disponibles en C :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Line 1 - a 不等于 b Line 2 - a 不小于 b Line 3 - a 大于 b Line 4 - a 小于或等于 b Line 5 - b 大于或等于 a
Opérateurs logiques
Le tableau suivant montre tous les opérateurs relationnels et logiques pris en charge par le langage C. Supposons que la variableAait une valeur de 1, que la variableBait une valeur de 0, alors :
| Opérateurs | Description | Exemple |
|---|---|---|
| && | Appelé l'opérateur ET logique. Si les deux opérandes sont non nuls, la condition est vraie. | (A && B) est faux. |
| || | Appelé l'opérateur OU logique. Si l'un des deux opérandes est non nul, la condition est vraie. | (A || B) est vrai. |
| ! | Appelé l'opérateur NON logique. Il est utilisé pour inverser l'état logique d'un opérande. Si une condition est vraie, l'opérateur NON logique la rendra fausse. | !(A && B) est vrai. |
Exemple
Consultez l'exemple suivant pour découvrir tous les opérateurs logiques disponibles en C :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Line 1 - 条件为真 Line 2 - 条件为真 Line 3 - 条件为假 Line 4 - 条件为真
Opérateurs bit à bit
Les opérateurs bit à bit agissent sur les bits et effectuent des opérations bit par bit. Les tables de vérité de &, | et ^ sont les suivantes :
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Supposons que A = 60 et B = 13. Maintenant représentés en format binaire, ils sont les suivants :
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
Le tableau suivant présente les opérateurs bit à bit pris en charge par le langage C. Supposons que la variableAait une valeur de 60, que la variableBait une valeur de 13, alors :
| Opérateurs | Description | Exemple |
|---|---|---|
| & | Effectue une opération ET logique sur chaque bit des deux opérandes. Si les deux bits correspondants sont 1, le résultat est 1 ; sinon, il est 0. L'opération ET bit à bit effectue l'opération « AND » sur les bits binaires. Les règles : 0&0=0; 0&1=0; 1&0=0; 1&1=1; | (A & B) donne 12, soit 0000 1100. |
| | | Effectue une opération OR logique sur chaque bit des deux opérandes. Si les deux bits correspondants sont 0, le résultat est 0 ; sinon, il est 1. L'opérateur OU bit à bit effectue l'opération « OU » sur les bits binaires. Les règles : 0|0=0; 0|1=1; 1|0=1; 1|1=1; | (A | B) donne 61, soit 0011 1101. |
| ^ | Effectue une opération XOR logique sur chaque bit des deux opérandes. Si les deux valeurs de bits correspondantes sont identiques, le résultat est 0 ; sinon, il est 1. L'opérateur XOR effectue l'opération « XOR » sur les bits binaires. Les règles : 0^0=0; 0^1=1; 1^0=1; 1^1=0; | (A ^ B) a pour valeur 49, soit 0011 0001. |
| ~ | Effectue une négation logique sur chaque bit de l'opérande, c'est-à-dire transforme chaque 0 en 1 et chaque 1 en 0. L'opérateur NON bit à bit effectue l'opération « NON » sur les bits binaires. Les règles : ~1=-2; ~0=-1; | (~A ) donnera -61, soit 1100 0011, la forme en complément à deux d'un nombre binaire signé. |
| << | Décale tous les bits de l'opérande vers la gauche du nombre de bits spécifié. Un décalage à gauche de n bits équivaut à multiplier par 2 à la puissance n. Opérateur de décalage à gauche binaire. Décale tous les bits binaires d'un opérande vers la gauche d'un certain nombre de bits (les bits binaires les plus à gauche sont écartés, et des zéros sont ajoutés à droite). | A << 2 a pour valeur 240, soit 1111 0000. |
| >> | Décale tous les bits de l'opérande vers la droite du nombre de bits spécifié. Un décalage à droite de n bits équivaut à diviser par 2 à la puissance n. Opérateur de décalage à droite binaire. Décale tous les bits binaires d'un nombre vers la droite d'un certain nombre de bits. Pour les nombres positifs, des zéros sont ajoutés à gauche ; pour les nombres négatifs, des uns sont ajoutés à gauche ; les bits les plus à droite sont écartés. | A >> 2 a pour valeur 15, soit 0000 1111. |
Exemple
Voir l'exemple suivant pour apprendre tous les opérateurs bit à bit disponibles en C :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
Opérateurs d'affectation
Le tableau suivant répertorie les opérateurs d'affectation pris en charge par le langage C :
| Opérateurs | Description | Exemple |
|---|---|---|
| = | Opérateur d'affectation simple, affecte la valeur de l'opérande droit à l'opérande gauche. | C = A + B affectera la valeur de A + B à C |
| += | Opérateur d'addition et d'affectation : ajoute l'opérande droit à l'opérande gauche et affecte le résultat à l'opérande gauche. | C += A équivaut à C = C + A. |
| -= | Opérateur de soustraction et d'affectation : soustrait l'opérande droit de l'opérande gauche et affecte le résultat à l'opérande gauche. | C -= A équivaut à C = C - A. |
| *= | Opérateur de multiplication et d'affectation : multiplie l'opérande droit par l'opérande gauche et affecte le résultat à l'opérande gauche. | C *= A est équivalent à C = C * A. |
| /= | Opérateur de division et d'affectation : divise l'opérande gauche par l'opérande droit et affecte le résultat à l'opérande gauche. | C /= A est équivalent à C = C / A. |
| %= | Opérateur de modulo et d'affectation, prend le modulo de deux opérandes et l'affecte à l'opérande gauche. | C %= A est équivalent à C = C % A. |
| <<= | Opérateur de décalage à gauche et d'affectation. | C <<= 2 est équivalent à C = C << 2. |
| >>= | Opérateur de décalage à droite et d'affectation. | C >>= 2 est équivalent à C = C >> 2. |
| &= | Opérateur ET bit à bit et d'affectation. | C &= 2 est équivalent à C = C & 2. |
| ^= | Opérateur OU exclusif bit à bit et d'affectation. | C ^= 2 est équivalent à C = C ^ 2 |
| |= | Opérateur OU bit à bit et d'affectation. | C |= 2 est équivalent à C = C | 2 |
Exemple
Voir l'exemple suivant pour apprendre tous les opérateurs d'affectation disponibles en C :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Line 1 - = 运算符实例,c 的值 = 21 Line 2 - += 运算符实例,c 的值 = 42 Line 3 - -= 运算符实例,c 的值 = 21 Line 4 - *= 运算符实例,c 的值 = 441 Line 5 - /= 运算符实例,c 的值 = 21 Line 6 - %= 运算符实例,c 的值 = 11 Line 7 - <<= 运算符实例,c 的值 = 44 Line 8 - >>= 运算符实例,c 的值 = 11 Line 9 - &= 运算符实例,c 的值 = 2 Line 10 - ^= 运算符实例,c 的值 = 0 Line 11 - |= 运算符实例,c 的值 = 2
Opérateurs divers ↦ sizeof & ternaire
Le tableau suivant répertorie quelques autres opérateurs importants pris en charge par le langage C, notammentsizeofet? :。
| Opérateurs | Description | Exemple |
|---|---|---|
| sizeof() | Renvoie la taille d'une variable. | sizeof(a) renverra 4, où a est un entier. |
| & | Renvoie l'adresse d'une variable. | &a; donnera l'adresse réelle de la variable. |
| * | Pointe vers une variable. | *a; pointera vers une variable. |
| ? : | Expression conditionnelle | Si la condition est vraie ? alors valeur X : sinon valeur Y |
Exemple
Voir l'exemple suivant pour apprendre tous les opérateurs divers disponibles en C :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Line 1 - 变量 a 的大小 = 4 Line 2 - 变量 b 的大小 = 2 Line 3 - 变量 c 的大小 = 8 a 的值是 4 *ptr 是 4 b 的值是 30 b 的值是 20
Priorité des opérateurs en C
La priorité des opérateurs détermine le regroupement des termes dans une expression. Cela affecte la façon dont une expression est évaluée. Certains opérateurs ont une priorité plus élevée que d'autres ; par exemple, les opérateurs de multiplication et de division ont une priorité plus élevée que les opérateurs d'addition et de soustraction.
Par exemple, x = 7 + 3 * 2. Ici, x reçoit 13, et non 20, car l'opérateur * a une priorité plus élevée que +, donc la multiplication 3*2 est calculée en premier, puis 7 est ajouté.
Le tableau suivant liste les opérateurs par ordre de priorité, du plus élevé au plus faible. Les opérateurs ayant une priorité plus élevée apparaissent en haut du tableau, et les opérateurs ayant une priorité plus faible apparaissent en bas. Dans une expression, les opérateurs ayant une priorité plus élevée sont évalués en premier.
| Catégorie | Opérateurs | Associativité |
|---|---|---|
| Postfixe | () [] -> . ++ - - | De gauche à droite |
| Unaire | + - ! ~ ++ - - (type)* & sizeof | De droite à gauche |
| Multiplicatif | * / % | De gauche à droite |
| Additif | + - | De gauche à droite |
| Décalage | << >> | De gauche à droite |
| Relation | < <= > >= | De gauche à droite |
| Égalité | == != | De gauche à droite |
| ET bit à bit | & | De gauche à droite |
| OU exclusif bit à bit | ^ | De gauche à droite |
| OU bit à bit | | | De gauche à droite |
| ET logique | && | De gauche à droite |
| OU logique | || | De gauche à droite |
| Conditions | ?: | De droite à gauche |
| Affectation | = += -= *= /= %=>>= <<= &= ^= |= | De droite à gauche |
| comma | , | De gauche à droite |
Exemple
Voir l'exemple suivant pour comprendre la priorité des opérateurs en C :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
(a + b) * c / d 的值是 90 ((a + b) * c) / d 的值是 90 (a + b) * (c / d) 的值是 90 a + (b * c) / d 的值是 50autres extensions