Vous êtes sur la page 1sur 34

TECHNIQUES DE 1ère Année

PROGRAMMATION EN «Génie Informatique»

LANGAGE C 2021/2022

Pr. Adil CHERGUI


DÉFINITIONS
Qu’est-ce qu’un Programme?
On peut considérer un programme comme la Un programme est stocké dans un fichier (un
traduction d’un algorithme dans un langage de ensemble de données stockées sur un support
programmation, i.e. un langage formel persistant). On distingue deux types de fichiers,
compréhensible par un ordinateur. On dit alors correspondant à deux versions différentes d’un
que ce programme est l’implémentation de cet programme : fichier source et fichier exécutable. Le
algorithme. premier contient ce que l’on appelle le code source,
il s’agit d’un fichier texte, alors que le second
• Programme : séquence d’instructions
contient le code binaire, aussi appelé code machine
destinées à être exécutées par un ordinateur.
ou code objet.
• Instruction : action que l’ordinateur connait
• Code source : programme exprimé dans un
et peut réaliser.
langage de programmation compréhensible par
Un langage de programmation (y compris le C) un être humain, et ne pouvant pas être exécuté
est caractérisé par son jeu d’instructions : directement par l’ordinateur.
• Jeu d’instructions : ensemble des • Code binaire : programme exprimé en langage
instructions autorisées dans un langage de machine, pouvant être directement exécuté par
programmation. l’ordinateur.

PROGRAMMATION 2
EN LANGAGE C
DÉFINITIONS
Qu’est-ce que la compilation?
Le code binaire est obtenu à partir du code La procédure de compilation varie en fonction du
source, en réalisant un traitement appelé langage de programmation. On s’intéresse ici au cas
compilation. Ce traitement est réalisé par un du langage C.
programme spécial appelé le compilateur.
Un programme C prend généralement la forme de
• Compilation : action de transformer un code plusieurs fichiers source distincts, que l’on veut
source en code binaire, de manière à obtenir compiler de manière à obtenir un seul fichier
un fichier exécutable à partir d’un fichier exécutable. La décomposition d’un programme en
source. plusieurs fichiers séparés permet de le rendre
modulaire, ce qui facilite la maintenance, le
Le code binaire est spécifique au processeur qui
débogage et l’évolution du programme.
va exécuter le programme. Par contre, le code
source en est généralement indépendant. Cela
signifie qu’un même code source sera compilé
différemment en fonction du processeur (et/ou
du système d’exploitation) que l’on veut utiliser
pour exécuter le programme.

PROGRAMMATION 3
EN LANGAGE C
DÉFINITIONS
Les étapes de la compilation
La première étape (en rouge) consiste à précompiler La troisième étape (en orange) est appelée l’assemblage,
les fichiers source, en appliquant les directives de pré- et consiste à transformer chaque fichier assembleur en un
compilation indiquées dans le code source au moyen fichier binaire. Là encore, on obtient autant de fichiers
du caractère #. Ces directives seront décrites plus binaires que de fichiers source originaux. Ces fichiers
tard, mais on peut déjà dire que le travail de pré- prennent généralement l’extension .o.
compilation consiste à transformer et compléter le
code source. On obtient ainsi une version complétée La quatrième et dernière étape (en vert) est l’édition des
de chaque fichier source traité. Les fichiers obtenus liens. Elle consiste à rassembler dans un seul fichier binaire
contiennent toujours du code source. tout le code binaire nécessaire à l’exécution du
programme. Ceci inclut à la fois la totalité ou une partie
La deuxième étape (en bleu) est la compilation des fichiers objets de l’étape précédente, mais aussi
proprement dite. Cependant, elle ne produit pas éventuellement de bibliothèques statiques préexistantes.
directement du code binaire, mais un code source On obtient finalement un seul fichier que l’on peut
intermédiaire, utilisant le langage assembleur. Ce exécuter.
langage est qualifié de bas-niveau, car son jeu
d’instructions correspond aux actions les plus simples
qu’un processeur peut effectuer. Par conséquent, un
programme assembleur se traduit très facilement en
un programme binaire. À ce stade de la procédure, on
obtient autant de fichiers assembleur qu’on avait
initialement de fichiers source.
PROGRAMMATION 4
EN LANGAGE C
DÉFINITIONS
Le schéma de compilation

Remarque : par abus de langage, on appelle compilation l’ensemble de la procédure permettant


d’obtenir un fichier binaire à partir d’un ou plusieurs fichiers sources, alors qu’en réalité, la
compilation proprement dite n’est qu’une étape de cette procédure (ici, la deuxième étape).
PROGRAMMATION 5
EN LANGAGE C
DÉFINITIONS
Erreurs de compilation et
d’exécution
On distingue deux types de problèmes pouvant Dans ce cas-là, il n’est pas possible de créer le fichier
survenir lors de l’écriture d’un programme, en exécutable correspondant à votre programme. Il est donc
fonction du moment où elles sont détectées : inutile de tenter d’exécuter votre programme si la
compilation ou exécution. compilation a échoué. Ces erreurs-là sont indiquées en
rouge par l’IDE. À noter que des options du compilateur
Erreur de compilation : problème détecté lors du permettent de considérer certains problèmes soit comme IDE ou EDI
processus de compilation. des avertissements, soit comme de vraies erreurs. Environnement de
Cette erreur peut être détectée lors de l’étape de Développement Intégré,
Des messages d’information sont indiqués pour chaque ou IDE (Integrated
compilation proprement dite, mais elle peut aussi avertissement et erreur de compilation, afin d’aider le
apparaitre lors de la pré-compilation (auquel cas il y a Development
programmeur à résoudre le problème identifié. Cependant, Environment) doté
probablement un problème avec les directives, par il faut savoir que ces messages ne sont pas toujours très
exemple un ; placé incorrectement à la fin d’une ligne d'une interface utilisateur
explicites, et peuvent parfois aussi être trompeurs (cela graphique. C'est un outil
de directive) ou d’une autre étape du processus. dépend du compilateur). pour faciliter la tâche du
Le compilateur peut indiquer un simple Il est nécessaire d’avoir une certaine expérience du programmeur dans la
avertissement, auquel cas le problème détecté n’est compilateur utilisé pour être capable de les interpréter réalisation d'applications
que potentiel, et n’empêche pas la création d’un correctement. De plus, une erreur de compilation peut en ou l'écriture de scripts.
fichier binaire qui pourra ensuite être exécuté. provoquer d’autres. Pour cette raison, il faut absolument
Dans ce cours nous allons
utiliser Code Blocks
Le compilateur peut indiquer une erreur proprement commencer par corriger la toute première erreur détectée
dite, qui empêche de finaliser la compilation. par le compilateur, puisqu’elle est susceptible de causer les
erreurs ultérieures.
PROGRAMMATION 6
EN LANGAGE C
The American National
UN PEU D’HISTOIRE Standards
Institute (ANSI) is a
private non-profit
Le langage C organization that
Le langage C est un langage de programmation • La version originale s’est stabilisée en 1978 et est oversees the
développé à partir de 1972 dans les laboratoires appelée Kernighan & Ritchie ou C K&R ; development
Bell, dans le but d’écrire le système d’exploitation of voluntary consensus
• L’ANSI a défini sa propre version en 1989, basée standards for products,
Unix. Sa paternité est attribuée à Dennis Ritchie
sur le C K&R et appelée C89 ou C ANSI ; services, processes,
et Ken Thompson, tandis que Brian Kernighan
est intervenu plus tard dans son évolution. • L’ISO a défini sa version basée sur le C ANSI en systems, and personnel
1999, qui est appelée C99. in the United States
L’un des objectifs était de définir un langage
portable. Dans ce cours, nous nous concentrerons sur la
version ANSI C89, qui est d’après nous la plus ISO, the International
• Portabilité : un langage de programmation est répandue. Organization for
dit portable s’il peut être compilé sur des Standardization, is an
machines et de systèmes différents, sans avoir independent, non-
besoin d’être modifié. governmental
Cependant, on ne peut pas vraiment considérer organization, the
que cet objectif a été atteint, car différentes members of which are
versions du C sont apparues, qui ne sont pas the standards
complètement compatibles entre elles. Les organizations of the
principales sont les suivantes : 163 country

PROGRAMMATION 7
EN LANGAGE C
UN PEU D’HISTOIRE
Le langage C Classement 2017-2018
On qualifie parfois le C de langage bas niveau
car il est relativement proche de l’assembleur.
Toutefois, il est de plus haut niveau que ce
dernier. Il s’agit du langage le plus utilisé au
monde, ou du moins figure-t-il parmi les trois
premiers, en fonction des classements
considérés.
Sa syntaxe a fortement influencé d’autres
langages de plus haut niveau apparus plus tard,
tels que C++, Java, C#, JavaScript ou PHP. Un
grand nombre de systèmes d’exploitation et de
jeux vidéo sont encore (complètement ou
partiellement) écrits en C aujourd’hui.

IEEE : top 10 des meilleurs langages de


programmation de l’année 2018 (colonne de
gauche) en comparaison au classement de
2017 (colonne de droite)

https://www.computerhistory.org/timeline/software-languages/ PROGRAMMATION 8
EN LANGAGE C
LE IDE CODE BLOCKS
Code Blocks
Pour pouvoir créer une programme en C, vous
avez besoin d’un logiciel qui vous permettra de :
• un éditeur de texte pour écrire le code
source du programme. En théorie un logiciel
comme le Bloc-notes sous Windows. L'idéal,
c'est d'avoir un éditeur de texte intelligent
qui colore tout seul le code, ce qui vous
permet de vous y repérer bien plus
facilement.
Ces tâches sont groupées dans un seul logiciel. Il
• un compilateur pour transformer (« compiler
existe plusieurs environnements de
») votre source en binaire (programme
exécutable). développement. Un des IDE préférable pour
débuter en programmation est Code::Blocks. Il
• un débogueur pour vous aider à retrouver est gratuit et fonctionne sur la plupart des
facilement les erreurs dans votre systèmes d'exploitation
programme, afin que de les corrigées.
Il est librement téléchargeable à partir de
l’adresse suivante :
http://www.codeblocks.org/downloads/26
PROGRAMMATION 9
EN LANGAGE C
LE IDE CODE BLOCKS
Téléchargement de Code Blocks
Taper l’adresse : http://www.codeblocks.org/downloads/26
Suivez les liens de téléchargement pour télécharger le fichier
codeblocks-17.12mingw-setup.exe
Exécutez ce fichier et suivez les étapes d’installation normale.
… et ensuite suivez les étapes de création d’un projet en C.

PROGRAMMATION 10
EN LANGAGE C
LE IDE CODE BLOCKS
Création d’un nouveau projet
Une fois vous lancez code blocks le premier interface apparait
pour vous inviter à créer un nouveau projet.

PROGRAMMATION 11
EN LANGAGE C
LE IDE CODE BLOCKS
Les éléments de l’interface
On distingue 4 grandes sections dans la fenêtre de code
blocks, ils sont numérotées sur l'image : 1- la barre d'outils : elle comprend de nombreux boutons,
mais seuls quelques-uns nous seront régulièrement utiles.

2- la liste des fichiers du projet :


c'est à gauche que s'affiche la liste
de tous les fichiers source de votre
programme. Notez que sur cette
capture aucun projet n'a été créé, on
ne voit donc pas encore de fichiers à
l'intérieur de la liste. Les fichiers de
votre projet s’afficheront ici lorsque
vous créez votre projet.

3- la zone principale : c'est là que


vous pourrez écrire votre code en
langage C.

4- la zone de notification : c'est ici que vous verrez les erreurs de compilation
s'afficher si votre code comporte des erreurs. Le rapport des erreurs comporte
la raison et la nature des erreurs, ainsi que le numéro de la ligne ou elle se
trouve PROGRAMMATION 12
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Programme Hello world!
Lors de la création d’un projet en langage C avec
l’IDE Code blocks, un fichier source (main.c) est
créé automatiquement contenant une source
comme exemple du programme le plus simple
illustrant le commencement de l’apprentissage
de n’importe qu’elle langage de programmation :
le programme Hello world. Ce programme
consiste simplement à afficher un message Hello
world!! à l’écran. Nous examinons ici le syntaxe
d’un programme en C. les instructions du langage C sont obligatoirement
encapsulées dans des fonctions et il existe une
Remarquez que l’éditeur du code propose une
fonction privilégiée appelée main qui est le point
certaines colorations significatifs des parties de
de départ de tout programme (appelée aussi
code en fonction de leurs fonctionnalités. Par
programme principal)
exemple : les directives d’inclusion de
bibliothèques spéciales de fonctions sont en vert,
les mots clés sont en gras et en bleu foncé, les
messages à afficher en bleu clair, les délimiteurs
en rouge…

PROGRAMMATION 13
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Programme Hello world!
Lors de la création d’un projet en langage C avec

int main() Toutes instructions doit


{ obligatoirement être inclues
dans un programme principal

« int main() ». Il permet de
… définir le début (l’accolade
return 0: ouvrante « { ») et la fin de votre
} programme (l’accolade
fermante « } »). Une ou
plusieurs instructions sont alors
écrites à la place des « … »

# include <stdio.h> printf(’’Bonjour!’’); est un


La directive #include inclue le int main() exemple d’instruction qui permet
fichier stdio.h au programme d’afficher à l’écran une message
{
avant la compilation. On parle « Hello world! » , c’est une
printf(’’ Hello world!’’); fonction prédéfinies qui
alors de préprocesseur
return 0: appartient à une bibliothèques
} de fonctions d’entrées et de
sorties dont il faut l’inclure dans
votre programme afin qu’elle
soit reconnus, c’est le rôle de la
directives # include <stdio.h>

PROGRAMMATION 14
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Programme Hello world!
Pour examiner le résultat que donne ce
programme, il faut compiler se projet à travers le
bouton build . La compilation une
fois réussie (sans erreurs de compilation) génère
une fichier exécutable que nous pouvons
exécuter à partir du compilateur en appuyant sur
le bouton run . Nous pouvons aussi
faire ces deux tâche simultanément en appuyant
sur le bouton build & run , dans les
deux cas une fenêtre d’exécution (que nous Cette console représente la manière dont
appelons console) s’affiche à l’écran. communique le programme avec son utilisateur.
C’est la raison pour laquelle le type du projet
Dans la console apparait le message Hello world!
que nous avons créé est du type console
qui représente le résultat de ce programme.
application.
Le message qui suit :
Process returned 0 (0x0) execution time : 0.031 s
Press any key to continue.

est un message générer par le compilateur qui


donne l’état d’exécution du programme : la
valeur retournée et le temps qu’a pris son
exécution. PROGRAMMATION 15
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Algorithme ► Programme en C
Prenons l’exemple de l’algorithme qui permet
d’échanger les valeurs de deux variables entiers
que nous allons traduire en langage C.
Par la suite nous allons expliqué chaque élément
de cette traduction.
ALGORITHME : echange
A,B,C : ENTIER
DEBUT
/*ce programme échange
les valeurs de deux variables*/
AFFICHER("donner A et B")
LIRE(A,B)
/*avant échange*/
AFFICHER("A =",A," et B=",B)
C ← A
A ← B
B ←
C
/*avant échange*/
AFFICHER("A =",A," et B=",B)
FIN
PROGRAMMATION 16
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Algorithme ► Programme en C
Prenons l’exemple de l’algorithme qui permet
d’échanger les valeurs de deux variables entiers
que nous allons traduire en langage C.
Par la suite nous allons expliqué chaque élément
de cette traduction.
ALGORITHME : echange
A,B,C : ENTIER
DEBUT
/*ce programme échange
les valeurs de deux variables*/
AFFICHER("donner A et B")
LIRE(A,B)
/*avant échange*/
AFFICHER("A =",A," et B=",B)
C ← A
A ← B
B ←
C
/*avant échange*/
AFFICHER("A =",A," et B=",B)
FIN
PROGRAMMATION 17
EN LANGAGE C
LES VARIABLES EN C
Les types de variables
Les types de base du langage C se répartissent en
3 grande catégories en fonction de la nature des
informations qu’ils permettent de représenter:
• Nombres entiers (int)
peuvent être signés ou non signés : signed
ou unsigned (unsigned int x;)
• Nombres réels à virgules flottantes (float ou
double)
• Caractère (char): apparaît en C comme un
cas particulier de int.

PROGRAMMATION 18
EN LANGAGE C
LES VARIABLES EN C
Le type entier
• short int ou short (entier sur 16 bits :
- 32 768 à 32 767) Exemple: unsigned short x;
• int (entier sur 32 bits : - 2 147 483 648 à 2 x peut aller de 0 à 65 535
147 483 647) pas de bit réservé pour le signe
- C accepte les constantes entière en
• long int ou long (entier sur 32 bits ou notation décimale, hexadécimale ou
64 bits, selon les machines) octale.
Chacun des 3 peut être nuancé par l’utilisation
du qualificatif unsigned pour ne représenter
que des nombres positifs. Par conséquence, le
nombre maximal qui peut être stocké augmente
tout en utilisant la même capacité :

PROGRAMMATION 19
EN LANGAGE C
LES VARIABLES EN C
Le type réel (float)
float: codé sur 4 octets avec 1 bit de signe, 23
bits de mantisse et 8 bits d'exposant. Exemple
C accepte les constantes flottante en
double : codé sur 8 octets avec 1 bit de signe, notation décimale ou scientifique
52 bits de mantisse et 11 bits d'exposant. 3.5e+3 3500 2.43 -0.38 -.38
4. .27
long double : codé sur 10 octets avec 1 bit de
signe, 64 bits de mantisse et 15 bits
d'exposant.
3.4*10-38 à
float Flottant (réel) 4
3.4*1038
1.7*10-308 à
double Flottant double 8
1.7*10308
long Flottant double 3.4*10-4932 à
10
double long 3.4*104932
PROGRAMMATION 20
EN LANGAGE C
LES VARIABLES EN C
Le type char
En C, un caractère est un entier signé codé sur 1 NOTATION RESULTAT
octet.
\a cloche ou bip (alert ou audible bell)
Notation des constantes caractères : ‘a’ , ‘$’ ..
\b Retour arrière (Backspace)
\f Saut de page (Form Feed)
Important: ‘a’ ≠ ‘’a’’ \n Saut de Ligne (Line Feed)
\r Retour chariot (Carriage Return)
\t Tabulation horizontaLe (HorizontaL Tab)
Il existe des caractères non imprimables, tel que
le changement de ligne, de tabulation, … en voici \v Tabutation verticale (VerticaL Tab)
un tableau récapitulatif \\ \
\' ‘
\ '' ‘’
\? ?

PROGRAMMATION 21
EN LANGAGE C
LES VARIABLES EN C
La table code ASCII

PROGRAMMATION 22
EN LANGAGE C
LES VARIABLES EN C
A propos du type Booléen
Nous avons vu en algorithmique le type de
variable particulier dans lequel il est possible de
stocker seulement des valeurs logiques (vrai,
faux). Le type booléen n’existe pas en C alors
qu’il existe dans d’autres langages de
programmation.
Le type booléen est représenté par un entier. Il se
comporte comme la valeur booléenne : vraie si
cette valeur entière est non nulle.
Dans un contexte qui exige une valeur booléenne
(comme les tests, par exemple), un entier non
nul équivaut à vrai et la valeur zéro équivaut à
faux.

PROGRAMMATION 23
EN LANGAGE C
LES VARIABLES EN C
La déclaration de variables
char
unsigned short Exemples :
signed int x, y=0, z;
int
identificateur
float a,b;
long = expression
unsigned short n=1000;
float
double
long double

Les mots suivants sont réservés. Leur fonction est prévue par la syntaxe de C et ils ne peuvent pas être utilisés dans un autre
but :
auto break case char const continue default do

double else enum extern float for goto if

int long register return short signed sizeof static

struct switch typedef union unsigned void volatile while PROGRAMMATION 24


EN LANGAGE C
LES OPERATEURS EN C
Opérateurs arithmétiques en C
C dispose d'un important éventail d'opérateurs Les opérateurs binaires ne sont à priori définis que
originaux d'affectation et d'incrémentation. pour deux opérandes ayant le même type parmi: int,
• Comme tous les langages, C dispose long int, float, double, long double et ils fournissent
d'opérateurs classiques "binaires" , à savoir un résultat de même type que leurs opérandes.
l'addition (+), la soustraction (-), la
multiplication (*), la division (/), et le Modulo
(%) ainsi que d'un opérateur "unaire"
correspondant à l'opposé noté - (comme dans
-n ou -x+y).
• Remarque: le quotient de deux entiers fournit
un entier. Ainsi 5/2 vaut 2; en revanche, le
quotient de deux flottants (noté, lui aussi, /)
est bien un flottant (5.0/2.0 vaut bien
approximativement 2.5).

PROGRAMMATION 25
EN LANGAGE C
LES OPERATEURS EN C
Opérateurs arithmétiques en C
Conversions implicites :
On peut écrire des expressions mixtes dans lesquelles interviennent des opérandes de types différents:
Int n,p; float x;
n*x + p (int * float) + int On parle de
Conversion implicite: int  float ( float*float) + int conversion d’ajustement de type:
intlongfloatdoublelong double
float + int
Même mécanisme : float + float  float
Les opérateurs numériques ne sont pas définis pour le types char et short :
C prévoit que toute valeur char ou short soit d’abord convertie en int.
char n,p; float x; n*x + p
(char* float) + char
Conversion systématique: ( int * float) + int
Conversion implicite : float * float + int
PROGRAMMATION
float + float  float EN LANGAGE C
26
LES OPERATEURS EN C
Les opérations relationnelles

Notation Notation en Sens


en pseudocode Langage C
a<b a<b a inférieur strictement à b
a>b a>b a supérieur strictement à b
a<=b a<=b a inférieur ou égale à b
a>=b a>=b a supérieur ou égale t à b
a=b a==b a égale à b
a!=b a!=b a différent de b
• L’opérateur = est un opérateur d’affectation en langage C.

PROGRAMMATION 27
EN LANGAGE C
LES OPERATEURS EN C
Opérateur d’affectation Opérateurs d’affectation élargie:
Opérateur d’affectation ordinaire Il existe aussi une équivalence en écritures de
• i = 5 est une expression qui réalisait une certaines opérations particulières d’affectations :
action : l'affectation de la valeur 5 à i. Cet
opérateur d'affectation (=) peut faire i=i+k  i+=k
intervenir d'autres expressions comme
a=a*b  a*=b
dans : c=b + 3
• Cet opérateur possède une associativité i=i-k  i-=k
de droite à gauche : i = j = 5
a=a/b  a/=b

PROGRAMMATION 28
EN LANGAGE C
LES OPERATEURS EN C
Opérateurs d’incrémentation et de décrémentation ( ++ - - )

• ++ i : expression qui incrémente de 1 la valeur


de i, et sa valeur est celle de i après Priorité:
incrémentation 3 * i++ * j-- + k++ équivaut à 3 * (i++) * (j--) + (k++)
• si la valeur de i est 5, l'expression : n = ++i - 5
affectera à i la valeur 6 et à n la valeur 1.
La priorité élevée de ces opérateurs unaires permet d’écrire
• n = i++ - 5 (n==0 , i++ vaut 5, i vaut 6)
des expression assez compliquées sans qu’il soit nécessaire d’employer
des ( )
• On dit que ++ est:
-un opérateur de pré incrémentation
lorsqu'il est placé à gauche
-un opérateur de post incrémentation
lorsqu'il est placé à droite

PROGRAMMATION 29
EN LANGAGE C
LES OPERATEURS EN C
Opérateur de CAST Opérateur conditionnel
L’operateur CAST permet d’obliger une
(seul opérateur ternaire en C)
conversion vers un type particulier.
syntaxe : condition ? Valeur si vrai : valeur si faux
Exemple: z = (x==y) ? a : b ; on utilise la valeur de l’expression

n=10, p=3; a>b ? i++ : i-- ; la valeur de l’expression n’est pas utilisée

(double) (n/p) aura comme valeur 3

(double) n/p aura comme valeur 3.33333…

PROGRAMMATION 30
EN LANGAGE C
LES OPERATEURS EN C
Opérateurs bit à bit Exemple :
Le langage C définit six opérateurs permettant de
#include <stdio.h>
manipuler les bits d’une variable:
int main(void)
• l’opérateur « et »: &. {
int a = 99; /* 99 == 0110 0011 */
• l’opérateur « ou inclusif »: |.
int b = 42; /* 42 == 0010 1010 */
• l’opérateur « ou exclusif »: ^. int c = 37; /* 37 == 0010 0101 */
/* 0110 0011 & 0010 1010 == 0010 0010 == 34 */
• l’opérateur de négation ou de complément: ~. printf("%d\n", a & b);
/* 0110 0011 | 0010 1010 == 0110 1011 == 107 */
• l’opérateur de décalage à droite: >>.
printf("%d\n", a | b);
• l’opérateur de décalage à gauche: <<. /* 0110 0011 ^ 0010 1010 == 0100 1001 == 73 */

Notez que tous ces opérateurs travaillent printf("%d\n", a ^ b);

uniquement sur des entiers. printf("%d\n",~c);/*~c == 1101 1010 */


printf("%d\n",c<<2);/*c<<2 == 1001 0100 == 158 */
printf("%d\n",c>>2);/*c>>2 == 0000 1001 == 9*/
return 0;
}
PROGRAMMATION 31
EN LANGAGE C
LES PRIORITÉS DES OPERATEURS EN C
Priorité Opérateurs Description Associativité
15 g [ ] -> . opérateurs d'adressage ->
++ -- incrément/décrément
~ complément à un (bit à bit)
! Le NON logique unaire
14 <-
&* adresse et valeur (pointeurs)
(type) conversion de type (cast)
+- plus/moins unaire (signe)
13 */% opérations arithmétiques ->
12 +- opérations arithmétiques ->
11 << >> décalage bit à bit ->
10 < <= > >= opérateurs relationnels ->
9 == != opérateurs relationnels ->
8 & ET bit à bit ->
7 ^ OU exclusif bit à bit ->
6 | OU bit à bit ->
5 && le ET logique ->
4 || le OU logique ->
3 ?: conditionnel <-
= += -= *= /= %=
2 assignations <-
>>= <<= &= ^= |=
1 , séparateur -> PROGRAMMATION
EN LANGAGE C
Informations complémentaires : Les priorités des
opérateurs
Certains symboles d’opérateurs sont utilisés avec La notion d’associativité dans le tableau de priorité, le sens
plusieurs significations, et donc, avec des priorités de l’évaluation d’une expression contenant des opérateurs
différentes. qui ont la même priorité :
Tel que le symbole &, se symbole signifie l’adresse • -> du gauche vers la droite
d’une variable lorsqu’il employé comme • <- de la droite vers la gauche
opération unaire(par exemple &Var) (à voir dans Dans certains cas, l’évaluation d’une expression dans une
les chapitres ultérieurs) . direction ou son inverse, donne le même résultat. Mais
Lorsque il est employé comme opération binaire dans d’autres cas non, comme exemple la division (/) :
(par exemple a&b), il signifie dans ce cas le ET en d=a/b/c; les deux sens d’évaluation donnent des résultats
opérations bit à bit. différents. Pour cela il faut tenir compte de l’associativité.
Donc, il faut bien prendre en compte le contexte Nous pouvons présenter un concept qui peut aider à s’en
d’utilisation du symbole comme opérateur : souvenir :
unaire ou binaire, pour différencier son L’opérateur ternaire (?: :), les opérateurs unaires (la classe
fonctionnement. (La même chose pour les 14) et les opérateurs d’assignations (classe 2), sont tous
symboles + et -) de la droite vers la gauche. Les autres sont du gauche vers
la droite.

33
Les Operateurs en C
Exercices

34

Vous aimerez peut-être aussi