Jusqu'à présent, dans cette série de didacticiels sur la programmation en C, nous avons abordé des éléments de base tels que les fonctions, les tableaux, les variables, etc. En continuant avec le flux, dans ce didacticiel, nous aborderons un autre concept de base :les opérateurs.
En tant que débutant en langage de programmation C, vous traiterez principalement trois types d'opérateurs :arithmétiques, relationnels et logiques. Commençons par les opérateurs aérothmétiques.
Il existe essentiellement cinq types d'opérateurs arithmétiques en C : +, -, *, / et %. Alors que +, - et / sont explicites, * fait référence à la multiplication et % est l'opérateur de module. Au cas où vous ne le sauriez pas, l'opérateur % vous donne un reste. Par exemple :
a % b
Ici, l'opérateur % garantit que vous obtenez la valeur restante lorsque 'a' est divisé par 'b'. Cela signifie que le reste peut être nul dans les cas où 'a' est complètement divisible par 'b'. Voici un petit exemple qui devrait vous éclairer davantage sur ces opérateurs :
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = a + b;
printf("%d\n", c);
c = a - b;
printf("%d\n", c);
c = a*b;
printf("%d\n", c);
c = a/b;
printf("%d\n", c);
c = a%b;
printf("%d\n", c);
return 0;
}
Voici la sortie de ce programme :
13
7
30
3
1
Il convient de mentionner ici que lorsqu'il s'agit de flottants et de doubles, vous ne devez pas utiliser l'opérateur %. De plus, les opérateurs + et - que nous avons utilisés ici sont des opérateurs binaires, ce qui signifie qu'ils nécessitent deux opérandes (par exemple, 'a' et 'b' dans notre cas). Il existe également des opérateurs unaires + et -, qui fonctionnent sur un seul opérande.
Voici un exemple de l'opérateur unaire - en action :
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = -a;
printf("c = %d", c);
}
Voici le résultat :
c = -10
Parmi tous les opérateurs discutés jusqu'à présent, en termes de priorité, unaire + et - partagent la première place, suivis de *, / et %, qui sont à leur tour suivis de binaire + et -.
Veuillez noter qu'il existe également d'autres opérateurs unaires, dont certains ont déjà été abordés indirectement dans nos précédents didacticiels. Voici la liste :++, --, !, &et sizeof.
Nous avons déjà discuté des opérateurs d'incrémentation et de décrémentation ++ et -- (à la fois sous forme de préfixe et de suffixe). ! n'est PAS l'opérateur qui annule tout ce sur quoi il est appliqué. Par exemple, si le résultat d'une condition est vrai, appliquer ! le convertira en faux, et vice versa.
Ensuite, &est utilisé pour récupérer l'adresse d'une variable (comme déjà vu dans le cas des arguments de la fonction scanf()), tandis que l'opérateur sizeof vous donne la taille de l'opérande qui lui est transmis. Le morceau de code suivant devrait vous donner une meilleure idée de ces opérateurs :
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0, d =1, e=0, f=9;
printf("a = 10 and a++ = %d\n", a++);
printf("b = 3 and ++b = %d\n", ++b);
printf("c = 0 and c-- = %d\n", c--);
printf("d = 1 and --d = %d\n", --d);
if(!e)
{
printf("\n e is zero or FALSE and its address is: %u\n", &e);
printf("\n sizeof 'f' is: %u\n", sizeof(f));
}
return 0;
}
Et voici le résultat :
a = 10 and a++ = 10
b = 3 and ++b = 4
c = 0 and c-- = 0
d = 1 and --d = 0
e is zero or FALSE and its address is: 856178696
sizeof 'f' is: 4
Passons maintenant rapidement aux opérateurs relationnels et logiques. Voici les opérateurs relationnels :
> >= < <= == !=
Voici comment ils peuvent être utilisés :
a > b
a >= b
a < b
a <= b
a == b
a != b
Dans l'ordre de leur apparition ci-dessus, ces opérateurs vérifient si 'a' est supérieur, supérieur ou égal à, inférieur à, inférieur ou égal à, égal et différent de 'b'. Les quatre premiers opérateurs ont la même priorité, qui est supérieure aux deux derniers. Notez que les deux derniers opérateurs sont également appelés opérateurs d'égalité.
Et enfin, venant aux opérateurs logiques. Il y en a essentiellement deux :&&et ||. Ces deux opérateurs sont principalement utilisés pour évaluer des conditions ou des expressions. Par exemple :
if (cond1 && cond2)
{
}
if (expr1 && expr2)
{
}
if (cond1 || cond2)
{
}
if (expr1 || expr2)
{
}
Dans le cas des deux premières instructions if, l'exécution n'entrera dans le bloc que si les deux conditions sont vraies. Alors que dans le cas des deux dernières instructions if, l'exécution entrera dans le bloc si l'une des conditions de l'expression est vraie.
Gardez à l'esprit que les opérateurs relationnels ont une priorité inférieure à celle des opérateurs arithmétiques, et que celle des opérateurs logiques est inférieure à celle des opérateurs relationnels et d'égalité. Entre eux, &&a une priorité plus élevée que ||.
Conclusion
Dans ce didacticiel, nous avons abordé les bases des opérateurs, leur fonctionnement et leur priorité. Il est suggéré de créer des exemples de programmes C pour tester les concepts abordés ici. En cas de doute ou de question, faites-le nous savoir dans les commentaires ci-dessous.