Opérateurs C

Une introduction aux opérateurs C et à la priorité des opérateurs

C nous offre une grande variété d'opérateurs que nous pouvons utiliser pour opérer sur des données.

En particulier, nous pouvons identifier différents groupes d'opérateurs:

  • opérateurs arithmétiques
  • opérateurs de comparaison
  • Opérateurs logiques
  • opérateurs d'affectation composés
  • opérateurs au niveau du bit
  • aiguilleles opérateurs
  • opérateurs de structure
  • opérateurs divers

Dans cet article de blog, je vais tous les détailler, en utilisant 2 variables imaginairesaetbcomme exemples.

Je garde les opérateurs bit à bit, les opérateurs de structure et les opérateurs de pointeur hors de cette liste, car je leur dédierai un article de blog spécifique.

Opérateurs arithmétiques

Dans ce groupe de macros, je vais séparer les opérateurs binaires et les opérateurs unaires.

Les opérateurs binaires fonctionnent avec deux opérandes:

Opérateur Nom Exemple
= Mission a = b
+ Une addition a + b
- Soustraction a - b
* Multiplication a * b
/ Division a / b
% Modulo a % b

Les opérateurs unaires ne prennent qu'un seul opérande:

Opérateur Nom Exemple
+ Unaire plus +a
- Moins unaire -a
++ Incrément a++ou++a
-- Décrémenter a--ou--a

La différence entrea++et++aest-cea++incrémente leavariable après son utilisation.++aincrémente leavariable avant de l'utiliser.

Par exemple:

int a = 2;
int b;
b = a++ /* b is 2, a is 3 */
b = ++a /* b is 4, a is 4 */

La même chose s'applique à l'opérateur de décrémentation.

Opérateurs de comparaison

Opérateur Nom Exemple
== Opérateur égal a == b
!= Opérateur différent a != b
> Plus grand que a > b
< Moins que a < b
>= Plus grand ou égal à a >= b
<= Inférieur ou égal à a <= b

Opérateurs logiques

  • !NOT (exemple:!a)
  • &&ET (exemple:a && b)
  • ||OU (exemple:a || b)

Ces opérateurs sont parfaits pour travailler avec des valeurs booléennes.

Opérateurs d'affectation composés

Ces opérateurs sont utiles pour effectuer une affectation et en même temps effectuer une opération arithmétique:

Opérateur Nom Exemple
+= Affectation d'addition a += b
-= Affectation de soustraction a -= b
*= Affectation de multiplication a *= b
/= Affectation de la division a /= b
%= Affectation modulo a %= b

Opérateurs divers

L'opérateur ternaire

L'opérateur ternaire est le seul opérateurCcela fonctionne avec 3 opérandes, et c'est un moyen court d'exprimer des conditions.

Voici à quoi ça ressemble:

<condition> ? <expression> : <expression>

Exemple:

a ? b : c

Siaest évalué àtrue, puis lebl'instruction est exécutée, sinoncest.

L'opérateur ternaire est fonctionnellement identique à un conditionnel if / else, sauf qu'il est plus court à exprimer et qu'il peut être inséré dans une expression.

taille de

LesizeofL'opérateur renvoie la taille de l'opérande que vous passez. Vous pouvez passer une variable, voire un type.

Exemple d'utilisation:

#include <stdio.h>

int main(void) {
  int age = 37;
  printf("%ld\n", sizeof(age));
  printf("%ld", sizeof(int));
}

Priorité des opérateurs

Avec tous ces opérateurs (et plus, que je n'ai pas abordés dans cet article, y compris les opérateurs de structure au niveau du bit et les opérateurs de pointeur), nous devons faire attention lorsque vous les utilisez ensemble dans une seule expression.

Supposons que nous ayons cette opération:

int a = 2;
int b = 4;
int c = b + a * a / b - a;

Quelle est la valeur dec? Est-ce que l'addition est exécutée avant la multiplication et la division?

Il existe un ensemble de règles qui nous aident à résoudre ce casse-tête.

Pour passer de moins de priorité à plus de priorité, nous avons:

  • le=opérateur d'assignation
  • le+et- binaireles opérateurs
  • le*et/les opérateurs
  • le+et-opérateurs unaires

Les opérateurs ont également une règle d'associativité, qui est toujours de gauche à droite, à l'exception des opérateurs unaires et de l'affectation.

Dans:

int c = b + a * a / b - a;

Nous exécutons d'aborda * a / b, qui en raison d'être de gauche à droite, nous pouvons nous séparer ena * aet le résultat/ b:2 * 2 = 4,4 / 4 = 1.

Ensuite, nous pouvons effectuer la somme et la soustraction: 4 + 1 - 2. La valeur decest3.

Dans tous les cas, cependant, je veux m'assurer que vous comprenez que vous pouvez utiliser des parenthèses pour rendre toute expression similaire plus facile à lire et à comprendre.

Les parenthèses ont une priorité plus élevée sur toute autre chose.

L'exemple d'expression ci-dessus peut être réécrit comme suit:

int c = b + ((a * a) / b) - a;

et nous ne devons pas trop y penser.

Téléchargez mon gratuitManuel C


Plus de tutoriels clang: