Académique Documents
Professionnel Documents
Culture Documents
Annexe TP3
I. Les opérateurs en C
1. Opérateurs d’incrémentation
Si l'opérateur d'incrémentation (++) ou de décrémentation (--) est placé avant l'opérande
alors la variable sera incrémentée ou décrémentée avant d'être utilisée.
Exemple 1:
#include <stdio.h>
void main(){
int a,b; /* Déclaration de variable a et b */
a=2; /* Initialisation de a et b */
b=10;
/* Affichage de a avec incrémentation avant l'utilisation */
printf("a = %d\n",++a); /* Affichage : a=3 */
/* Affichage de b avec décrémentation avant l'utilisation */
printf("b = %d",--b); /* Affichage : b=9 */
printf("a = %d\n",a); /* Affichage : a=3 */
printf("b = %d",b); /* Affichage de b=9 */
}
Exemple 2 :
#include <stdio.h>
void main(){
int a,b; /* Déclaration de variables a et b */
a=2; /* Initialisation de a et b */
b=10;
/* Affichage de a avec incrémentation après l'utilisation */
printf("a = %d\n",a++); /* Affichage : a=2 */
/* Affichage de b avec décrémentation après l'utilisation */
printf("b = %d\n",b--); /* Affichage : b=10 */
printf("a = %d\n",a); /* Affichage : a=3 */
printf("b = %d",b); /* Affichage : b=9 */
}
__________________________________________________________________________
ISETMA 2010/2011
-1-
Atelier Programmation 1 ___________________________________________________________________________________________
2. Opérateurs de comparaison
Ils permettent de comparer une variable par rapport à une autre variable ou une valeur ou
une expression. Le résultat ne peut être que VRAI (correspond à 1) ou FAUX (correspond à
0).
3. Opérateurs logiques
Les résultats des opérateurs logiques sont du type int:
la valeur 1 correspond à la valeur booléenne vrai
la valeur 0 correspond à la valeur booléenne faux
Exemple :
#include <stdio.h>
void main()
{
/* Déclaration d'entiers */
int a,b,c;
int res;
a=2,b=3,c=5;
res= ( (a>3) && (c>5) );
printf("res = %d\n",res); /* Affichage : res=0 */
res= ( (b>2) || (c<4) );
printf("res = %d\n",res); /* Affichage : res=1 */
res= !(a<b);
printf("res = %d\n",res); /* Affichage : res=0 */
}
__________________________________________________________________________
ISETMA 2010/2011
-2-
Atelier Programmation 1 ___________________________________________________________________________________________
5. Opérateurs de décalage
Ce type d'opérateur traite ses opérandes comme des données binaires d'une longueur de 32
bits. Les opérateurs suivants effectuent des rotations sur les bits, c'est-à-dire qu'il décale
chacun des bits d'un nombre de bits vers la gauche ou vers la droite.
Le premier opérande désigne la donnée sur laquelle on va faire le décalage, le second
désigne le nombre de bits duquel il va être décalé.
6. Opérateurs combinés
Pour la plupart des expressions de la forme: id1 = (id1) op (id2), il existe une formulation
équivalente qui utilise un opérateur combiné: id1 op= id2.
__________________________________________________________________________
ISETMA 2010/2011
-3-
Atelier Programmation 1 ___________________________________________________________________________________________
7. Opérateurs conditionnels
C'est le seul opérateur ternaire.
Syntaxe : <expression1>? <expression2> : <expression3>
Cette expression vaut la valeur de <expression2> si <expression1> est vrai (entier, différent
de 0), et <expression3> si <expression1> est faux.
Exemples :
y = 100;
a = (y < 200) ? 3.14 : 25; => a = 3.14
b = (a > 3) ? ((y > 200) ? 10.1 : 5.0) : 123.0; => b = 5.0
8. Opérateurs séquentiels
Une expression peut être constituée d'une suite d'expressions séparées par des virgules. Cette
expression est alors évaluée de gauche à droite. Sa valeur finale sera la valeur de
l'expression de droite.
Syntaxe : <expression1>, <expression2>, ..., <expressionN> ;
Exemple :
#include <stdio.h>
void main(){
int a, b,c;
b = ((a = 3), (a + 2));
printf("b = %d \n",b); /* Affichage : b=5 */
c= (b++,b+12); /* incrémente b, effectue la somme b+12 puis affecte le
résultat à c */
printf("c = %d \n",c); /* Affichage : c=18 */
}
9. Opérateurs d’adressage
L'opérateur d'adresse & appliqué à une variable retourne l'adresse mémoire de cette variable.
Syntaxe : &identificateur
__________________________________________________________________________
ISETMA 2010/2011
-4-
Atelier Programmation 1 ___________________________________________________________________________________________
1. La conversion implicite
Si un opérateur porte sur deux opérandes de types différents, il y a conversion du type le
plus faible dans le type le plus fort (nombre d'octets).
Voici les règles simples permettant de déterminer les conversions implicites utilisées en C.
Ces règles sont appliquées dans l'ordre cité :
Si l'un des opérandes est double, convertir l'autre en double.
Si l'un des opérandes est float, convertir l'autre en float.
Convertir les opérandes de type char et short en int.
Si l'un des opérandes est long, convertir l'autre en long.
2. La conversion explicite
Lorsqu’une conversion paraît logique (int float), le compilateur procède à une conversion.
Cependant, il est tout à fait possible de procéder à la conversion d'un float en un int par
exemple. Cette conversion est dite une conversion forcée ou explicite. Une conversion
forcée peut être effectuée en utilisant un cast.
Exemple :
#include <stdio.h>
void main()
{/* Déclaration des variables */
char car;
int a,b,c,d;
float g;
a=4;
b=7;
c=0x41; /* Code Ascii de 'A' */
/* Conversion implicite de a et b en float */
g = (a + b) /100. ;
printf("g= %f\n",g);
/* Conversion explicite c en char */
car = (char) c +3;
/* c est de type entier et sera converti en char */
printf("car = %c\n",car);
d = (int)b/a ;
printf("d = %d\n",d);
}
__________________________________________________________________________
ISETMA 2010/2011
-5-