Vous êtes sur la page 1sur 71

ENSA de Tanger

Langage C

Chapitre 2:
2: Types, Opérateurs
et expressions.

Ensa de Tanger 1
ENSA de Tanger

Chapitre 2:
2: Types, Opérateurs
et expressions.

1-Les types des Variables

Ensa de Tanger 2
La mémoire centrale
 La mémoire centrale est un ensemble de
positions binaires nommées bits qui sont
regroupés en octets (8 bits), et chaque octet
est repéré par ce qu’on nomme son adresse.

 Il n’est pas possible d’attribuer une


signification à une information binaire tant
que l’on ne connaît pas la manière dont elle
a été codée.

Ensa de Tanger 3
Notion de variable
 Variable: consiste à réserver un emplacement mémoire
destiné à recevoir une donnée en lui donnant un nom.

 Type d’une variable: permet de définir la taille de l’espace


mémoire associé à cette variable et les opérations que l’on
pourra réaliser sur ces variables.

 syntaxe:

<type> <nom_variable1>, <nom_variable2>,... ;

4
Les types de variables de base
Ce sont les types prédéfinis du compilateur, ils se répartissent
en trois grandes catégories en fonction de la nature des
informations qu’ils permettent de représenter :

 le type entier: int


int,, short, long

 le type caractère: char (cas particulier de int)

 le type réel: float , double , long double

5
Les types de variables de base
 Le type entier
Le tableau suivant résume les caractéristiques des types
numériques entiers de C (sur 16 bits):

définition description domaine min domaine max nombre d'octets

short entier court -32768 32767 2


entier
int
standard
-32768 32767 2

long entier long -2147483648 2147483647 4


Les types de variables de base
 Le modificateur unsigned (non signé)
Si on ajoute le préfixe unsigned à la définition d'un type de
variables entières, les domaines des variables sont déplacés
comme suit:
domaine domaine nombre
définition description
min max d'octets
unsigned
char
caractère 0 255 1
unsigned
short
entier court 0 65535 2
entier
unsigned int
standard
0 65535 2
unsigned
long
entier long 0 4294967295 4
7
Les types de variables de base
 Le type réel

 Les types flottants permettent de représenter, de manière


approchée, une partie des nombres réels en s’inspirant de
la notation scientifique (ou exponentielle) bien connue
 1.5 1022 ou 0.472 10-8
 « mantisses » les quantités telles que 1.5 ou 0.472
 « exposants » les quantités telles que 22 ou -8

8
Les types de variables de base
 Le type réel
float: ce type sert pour les calculs avec des parties décimales.

double: c'est un type qui permet de représenter des valeurs


ayant une partie décimale avec une plus grande précision que
le type float. Ce type est le plus courant pour représenter des
valeurs avec parties décimales.

long double: ce type permet de représenter des nombres avec


une partie décimale nécessitant une très grande précision.

9
Les types de variables de base
 La précision pour les différents types réel
float: simple précision (32 bits) 1 bit de signe, 8 bits d'exposant, 23 bits de
mantisse

double: double précision (64 bits) 1 bit de signe, 11 bits d'exposant , 52 bits de
mantisse.

long double: double précision étendue (80 bits) 1 bit de signe, 15 bits
d'exposant, 64 bits de mantisse

 L’erreur (relative) ne dépassera pas (10-6 pour le type float) et (10-10 pour le
long double)

Ensa de Tanger 10
Les types de variables de base
 Le type réel
Le tableau suivant résume les caractéristiques des types
numériques réel de C :

définition précision mantisse domaine min domaine max nombre d'octets

float simple 23 bits 3.4 * 10-38 3.4 * 1038 4

double double 52 bits 1.7 * 10-308 1.7 * 10308 8

long
suppl. 64 bits 3.4 * 10-4932 1.1 * 104932 10
double
11
Les types de variables de base
 Notation des constantes flottantes
 Peuvent s’écrire indifféremment suivant l’une des deux
notations :
 Décimale
 Exponentielle
 La notation décimale comporte obligatoirement un point
(virgule
virgule)
En voici quelques exemples corrects : 12.43 -0.38 -.38 4.
.27
 La notation exponentielle utilise la lettre e (ou E) pour
introduire un exposant entier (puissance
puissance de 10)10
4.25E4 4.25e+4 42.5E3
Ensa de Tanger 12
Les types de variables de base
 Le type caractère: char
 C permet de manipuler des caractères codés en mémoire sur
un octet
 Exemple de caractères imprimables, en écrivant entre
apostrophes (ou quottes) le caractère voulu : 'a' 'Y'
'+' '$‘
 Caractères non imprimables possèdent une représentation
conventionnelle utilisant le caractère « \ », nommé
«antislash
antislash » \n \a ……

Ensa de Tanger 13
Les types de variables de base
 Le type caractère: char
Toute variable de type char peut contenir un (seul) caractère.
Une valeur de type caractère peut être considérée de deux façons:
 comme le caractère concerné: a, A, Z, ?, fin de ligne (\n) ...
 comme le code de ce caractère, c'est-à-dire un motif de 8 bits; or
à ce dernier on peut toujours faire correspondre un nombre
entier (le nombre qui, codé en binaire, fournit le motif en
question);
par exemple: dans le code ASCII, le caractère A est représenté
par le motif binaire 01000001, auquel on peut faire correspondre
le nombre 65. Ce nombre peut être intégré dans toute sorte
d'opérations algébriques ou logiques ...

14
Les types de variables de base
 Le type booléen
Il n’existe pas de booléen dans C

Ils sont remplacés par les entiers avec la convention 0 pour


FAUX, tout ce qui est différent de 0 pour VRAI.

15
Les types de variables de base
Les Codes de Format pour l’affichage des types

Type Code de Format

int %d

long %ld

float/double %f / %lf

char %c

string (char*) %s

Ensa de Tanger 16
Les types de variables de base
Exercice: Traduisez les déclarations suivantes en C, sachant
Exercice:
que vous travaillerez dans les ensembles de nombres indiqués.
Choisissez les types les plus économiques, sans perdre en
précision.
(1) int COMPTEUR; COMPTEUR
entier {0 ,..., 300} {0 ,..., 300}
(2) char
entierX,Y; X,Y {-120 ,..., 100} {-120 ,..., 100}
(3) int MESURE;
entier {-10 ,..., 104}
MESURE {-10 ,..., 104}
(4) réel SURFACE1; SURFACE1
float 150075}} : {0.5
{0.5 ,..., 150075 6 positions significatives
,..., 150075}
(5) double
réel SURFACE22SURFACE2
SURFACE ; {-12 ,..., 1500750.5}:
1500750.5}{:-812positions significatives
,..., 1500750.5}
(6) int N1;
entier N1 {0 ,..., 210} = {0 ,..., 1024}
{0 ,..., 210}
(7) int N2 ;
entier N2 {-47 ,..., 47} = {-
{-16384 7 ,...,
{-4,..., 47}
16384}
(8) entierN3;
long N3 {0 ,..., 326} = {0 ,..., 1{0073 326}824}
,..., 741
(9) double
entier N4; N4 {-1280 ,..., 1285} = {- ,..., 03.4*10
{-{1-128 10}5}
,..., 128
boolé
bool
10)) int
(10 éen
TROUVE; TROUVE
par convention {vrai
vrai,, faux
faux}} 17
initialisation des variables
Il est préférable d’initialiser une variable lors de sa définition
en lui attribuant une valeur à sa déclaration.

 exemple:
int i =3;
double PI = 3.14 ;
int k = 1, j = 2 ;

int n ;
int p ;
p = n+5;
Le contenu de n n’étant pas défini, la valeur de p après
ces instructions n’est pas prévisible
Les constantes
Il est possible de déclarer que la valeur d’une variable ne
#include
doit pas changer lors <stdio.h>
de l’exécution du programme..
 exemple: main()
{const int i=3;
const int n = 3 ;
i= i+4;
printf ("%d",
les instructions modifiant i); de n seront rejetées par le
la valeur
compilateur. getch();
}

19
Les définitions de types (typedef
(typedef))
Il est possible en C de définir ses propres types de données qui
viendront s’ajouter aux types prédéfinis.

 Renommage de types existants :

Syntaxe :

typedef <type_à_renommer> <nouveau_nom> ;

20
Les définitions de types (typedef
(typedef))
 Exemple
Exemple1
1:
<type_à_renommer>
typedef int naturel ;
<nouveau_nom>
/* alors : */
int t ;  naturel t ;

 Exemple 2 :
typedef float reel ;
/* alors : */
float x ;  reel x ;
21
ENSA de Tanger

Chapitre 2: Types, Opérateurs


et expressions.

2-Opérateurs & expressions

Ensa de Tanger 22
L’originalité des notions d’opérateur et d’expression en C

En C les notions d’expressions et d’instructions sont très liées


 Expressions formées (entre autres) à l’aide d’opérateurs
d’opérateurs,,
 Instructions pouvant éventuellement faire intervenir des expressions

 Exemple, l’instruction d’affectation


d’affectation :
y = a * x +b ;
 Instruction d’affichage
d’affichage :
printf ("valeur %d", n + 2*p); dans laquelle apparaît l’expression n + 2* p

Ensa de Tanger 23
L’originalité des notions d’opérateur et d’expression en C

 Généralement, dans les autres langage, l’expression


l’expression possède une valeur
mais ne réalise aucune action.
action. Seulement en C, c’est différent
 ++i (possède une valeur et agit sur la variable)
 k=i=5 k = (i = 5) (possède une valeur et agit sur la variable)
 En C, les notions d’expression
d’expression et d’instruction sont étroitement liées
puisque la principale instruction de ce langage est une expression
terminée par un point
point--virgule
 On la nomme souvent « instruction expression »
 Exemples de telles instructions
 ++i ;
 i=5;
 k=i=5;
Ensa de Tanger 24
Les opérateurs arithmétiques
Présentation des opérateurs
opérateurs binaires
+ addition

- soustraction

* multiplication

/ division (entière et rationnelle)

% modulo (reste div. entière)


opérateur unaire
- l’opposé

25
Les opérateurs arithmétiques
Présentation des opérateurs

Exemple
int a, b ;
float Y;
Y= a+b;
Y= a-b;
Y= -a*b;
Y= a/b;
Y= a%b; // exemple :13%2 = 1
26
Les opérateurs arithmétiques
Les priorités relatives des opérateurs

 Lorsque plusieurs opérateurs apparaissent dans une même


expression, il est nécessaire de savoir dans quel ordre ils sont
mis en jeu.

 les règles des priorités en C rejoignent celles de l’algèbre


traditionnelle..

27
Les opérateurs arithmétiques
Les priorités relatives des opérateurs

 Les opérateurs unaires + et - ont la priorité la plus élevée.

 Ensuite dans le même niveau, les opérateurs *, / et %.

 Enfin sur le dernier niveau, les opérateurs binaires + et -.

Remarque :
En cas de priorités identiques, les calculs s’effectuent
de gauche à droite.

28
Les opérateurs arithmétiques
Les priorités relatives des opérateurs
Exemple
Appliquer les règles de priorité en
utilisant des parenthèses.
a+b*c
a*b+c%d
-c%d
-a+c%d
-a/-b+c
-a/-(b+c)
29
Les opérateurs arithmétiques
Les priorités relatives des opérateurs

Exemple Après app des règles


a+b*c a+(b*c)
a*b+c%d (a*b)+(c%d)
-c%d (-c)%d
-a+c%d (-a)+(c%d)
-a/-b+c ((-a)/(-b))+c
-a/-(b+c) (-a)/(-(b+c))

30
Les opérateurs arithmétiques
Les priorités relatives des opérateurs

 les parenthèses permettent d’outrepasser les règles de priorité.

 les parenthèses peuvent être employées pour assurer


une meilleure lisibilité d’une expression.

31
Les opérateurs arithmétiques
Les conversions implicites
 les opérateurs arithmétiques ne sont définis que lorsque leurs
Deux opérandes sont de même type..

 la notion des conversions implicites permet d'écrire


des expressions mixtes dans lesquelles interviennent
des opérandes de types différents.

Exemple
float x;
int n, p ;
n * x + p;
32
Les opérateurs arithmétiques
Les conversions implicites Exemple
float x;
int n, p ;
n * x + p;
 il faut commencer par effectuer le produit n*x.
 la conversion de la valeur de n dans le type float
 la multiplication portera sur deux opérandes de type float et
elle fournira un résultat de type float.
 Pour l’addition: (float et int), Le même mécanisme sera mis
en place, et le résultat final sera de type float.

33
Les opérateurs arithmétiques
Les conversions d’ajustement de type
 Une conversion telle que int -> float se nomme une
« conversion d’ajustement de type».

 La conversion doit suivre l’hiérarchie suivante:


char ->short -> int -> long -> float -> double -> long double

 On peut bien sûr convertir directement un int en double.

 on ne pourra pas convertir un double en float ou en int.

34
Les opérateurs arithmétiques
Les conversions d’ajustement de type
 si n est de type int, p de type long et x de type float, l’expression
n * p + x sera évaluée suivant ce schéma :

35
Les opérateurs arithmétiques
Les promotions numériques
 les opérateurs numériques ne sont pas définis pour les types
char et short.

 Dans une expression de calcul numérique, toute valeur d’une


variable de type char et short est d’abord convertie en int.

 On parle alors, dans ce cas, de « promotions numériques » ou


encore de « conversions systématiques ».

36
Les opérateurs arithmétiques
Les promotions numériques

Exemple
Donner le schéma de la conversion pour
l’expression suivante:

p1 * p2 + p3 * x

p1, p2 et p3 sont de type short et x de type float

37
Les opérateurs arithmétiques
Les promotions numériques
Exemple
le schéma de la conversion de :
p1 * p2 + p3 * x

38
Les opérateurs arithmétiques
Le cas du type char
 une valeur de type caractère peut être considérée comme :

1- le caractère concerné : a, Z, fin de ligne.

2- le code de ce caractère, c’est-à-dire un octet (8 bits)

 le langage C confond un caractère avec la valeur (entier)


du code qui le représente.

39
Les opérateurs arithmétiques
Le cas du type char
Exemple
c1, c2 sont de type char

40
Les opérateurs arithmétiques
Le cas du type char
Exemple
Donner le résultat du code suivant

41
Les opérateurs arithmétiques
Le cas du type char
Exemple
le résultat du code :
65
B
G

42
Les opérateurs Relationnels
Présentation des opérateurs :
 C permet de comparer des expressions à l’aide d’opérateurs
classiques de comparaison:
2*a>b+5

 le résultat de la comparaison est, non pas une valeur


booléenne (vrai ou faux) mais un entier valant :

1. 1 si le résultat de la comparaison est vrai


2. 0 si le résultat de la comparaison est faux

43
Les opérateurs Relationnels
Présentation des opérateurs

opérateurs binaires
> supérieur à

>= supérieur ou égal à

< inférieur à

<= inférieur ou égal à

== égal à

!= différent de

44
Les opérateurs Relationnels
Les priorités relatives des opérateurs
 Les opérateurs (<, <=, >, >=) ont la priorité la plus élevée
(même niveau).
 Ensuite dans le même niveau, les opérateurs (== et !=).
 les opérateurs relationnels sont moins prioritaires
que les opérateurs arithmétiques.

Exemple

a < b == c < d est équivalent à ( a < b) == (c < d)

x + y < a + 2 est équivalent ( x + y ) < ( a + 2 )


45
Les opérateurs Relationnels
Le cas du type char
Exemple
le résultat du code suivant est : ??

46
Les opérateurs Relationnels
Le cas du type char
Exemple
le résultat du code suivant est : 1*(a%b)

47
Les opérateurs Logiques
Présentation des opérateurs :

 C dispose de trois opérateurs logiques classiques : et (noté &&),


ou (noté ||) et non (noté !).

● (a<b) && (c<d)


prend la valeur 1 (vrai) si les deux expressions a<b et c<d sont
toutes deux vraies (de valeur 1), et prend la valeur 0 (faux) dans le
cas contraire.

48
Les opérateurs Logiques
Présentation des opérateurs :
● (a<b) || (c<d)
prend la valeur 1 (vrai) si l’une au moins des deux conditions a<b
et c<d est vraie (de valeur 1), et prend la valeur 0 (faux) dans le
cas contraire.
● ! (a<b)
prend la valeur 1 (vrai) si la condition a<b est fausse (de valeur 0)
et prend la valeur 0 (faux) dans le cas contraire.
Cette expression est équivalente à : a>=b.
Remarque:
Ces opérateurs produisent un résultat numérique (de type int)
(0 ou 1).

49
Les opérateurs Logiques
Présentation des opérateurs

50
Les opérateurs Logiques
Présentation des opérateurs :
les opérandes des opérateurs logiques peuvent être n’importe
quel opérande numérique à condition de considérer que:

● 0 correspond à faux,

● toute valeur non nulle (et donc pas seulement la valeur 1)


correspond à vrai.
Remarque:
si n et p sont des entiers, des expressions telles que :
n && p n || p !n sont acceptées par le compilateur.

51
Les opérateurs Logiques
Les priorités relatives des opérateurs
 L’opérateur ! a une priorité supérieure à celle de tous
les opérateurs arithmétiques binaires et aux opérateurs relationnels

 L’opérateur || est moins prioritaire que &&.

 || et && sont de priorité inférieure aux opérateurs


arithmétiques ou relationnels.

52
Les opérateurs Logiques
Les priorités relatives des opérateurs
 if (!n) équivaut à if ( n == 0 )

 a<b && c<d équivaut à (a<b) && (c<d)

 a<b || c<d équivaut à (a<b) || (c<d)

 ! ( a == b ) est différent de ! a == b

53
Les opérateurs Logiques

Exemple
Donner le résultat du code suivant

54
L’opérateur d’affectation
Présentation des opérateurs :
a = 3; est une expression qui :
● réalise une action : l’affectation de la valeur 3 à a,

● possède une valeur : celle de a après affectation, c’est-à-dire 3.

Remarque
 la priorité de l'opérateur = est inférieure à celle de tous
les opérateurs arithmétiques , logiques et de comparaison.
L’expression suivante est incorrecte : a + 4 = b;

55
L’opérateur d’affectation

Exemple
Donner le résultat du code suivant

56
L’opérateur d’affectation

Exemple
le résultat du code est :25

57
L’opérateur d’affectation
Présentation des opérateurs :
L’opérateur d’affectation possède une associativité
de droite à gauche

a = b = 7; est une expression qui :

● affecte la valeur 7 à la variable b.

● affecte la valeur de b (7) à la variable a.

la valeur finale de cette expression est 7

58
Les opérateurs d’incrémentation
 Les opérateurs d’incrémentation et de décrémentation
En programmation, on utilise souvent des expressions
d’incrémentation et de décrémentation qui augmentent ou
diminuent de 1 la valeur d'une variable.
ex: i = i + 1, n=n–1

En C, ces actions peuvent être réalisées par les opérateurs "++ et --


": ++ incrémentation
- - décrémentation
Ces opérateurs incrémentent / décrémentent de 1 la valeur
opérande: i++; ou ++i; correspondent à i=i+1;
i-- ; ou --i; correspondent à i=i-1;

59
Les opérateurs d’incrémentation
 Les opérateurs d’incrémentation et de décrémentation

i=3;

i ++ ; i=?

i=4:

i -- ;

j=i-3; j=?

j=0;

60
Les opérateurs d’incrémentation
 La postincrémentation et la préincrémentation
* Postincrémentation (postdécrémentation):
j = i++ ; j = i-- ;
affecte d’abord la valeur de i à j, et ensuite incrémente i

* Préincrémentation (prédécrémentation):
j = ++i ; j = --i ;
la variable est incrémentée ou décrémentée avant l’affectation.
i=2;
j = (i++) + 3 ;
 j contient 5 et i contient 3
i=2;
j = (++i) + 3 ;
 i contient 3 et j contient 6
61
Les opérateurs d’affectation élargie
 syntaxe générale:

var1 op = var2  var1=var1 op var2

exemples:
a+=b ajouter b à a et mettre le tout dans a
a-=b diminuer b de a et mettre résultat dans a
a*=b multiplier a par b et mettre résultat dans a
a/=b diviser a par b et mettre résultat dans a
a%= b mettre dans a le résultat de a%b

i=i+1  i+=1
a=a-b  a-=b
62
Les opérateurs d’affectation élargie
Exemples :
Soient les valeurs: a=20
a=20;; b=
b=55; c=
c=--10
10;; d=
d=22; x=
x=12
12;; y=
y=15
15;;
Quels résultats donnent les instructions suivantes:
1) a += (x+
x+55) ;
a=a+(x+55)
a=a+(x+  a=20
a= 20+(
+(12
12++5)=
)=37
37
2) a != ( c *=(-
*=(-d) )
a=37
a= 37 et c=c*(-
c=c*(-d)=
d)=--10
10**-2=20  a != (c *= (-
(-d)) 1 (vrai)
3) a *= c+(x
c+(x--d) ;
a=a*(c+(x--d))
a=a*(c+(x  a=37
a= 37*(
*(20
20+(
+(12
12--2))=
))=37
37*(
*(30
30)=
)=1110
1110
4) a %= d++ ;
a=a%d
a=a%d puis d=d+1
d=d+1  a=00 , d=3
a= d=3
5) a %= ++
++dd;
d=d+1
d=d+ 1 puis a=a%d
a=a%d  d=44 , a=0
d= a=0
63
Les conversions forcées par une affectation

 Une affectation introduit une conversion d’office dans le type de


la lvalue réceptrice
réceptrice,
 Exemple: si n(
n(int
int)) et x(
x(float
float)), l’affectation :
n = x + 5.3 ; évaluation de l’expression à droite, qui fournira une
valeur de type float ; cette dernière sera ensuite convertie en int
pour pouvoir être affectée à n.n

Ensa de Tanger 64
L’opérateur conditionnel (?)
if ( a>b )
 max = a>b ? a : b est équivalente à:: max = a ;
else
max = b ;
 D’une manière générale, l’opérateur évalue la première
expression qui joue le rôle d’une condition. Si sa valeur est
différente de zéro
zéro,, il y a évaluation du second opérande,
opérande ce qui
fournit le résultat ; si sa valeur est nulle,
nulle en revanche, il y a
évaluation du troisième opérande,
opérande ce qui fournit le résultat
3*a+
*a+11 > 0 ? 3*a+
*a+11 : -3*a
*a--1
z = (x=y) ? a : b
z = x = y ? a : b est équivalente à: z = x = ( y ? a : b )
z = ( a>b ? a : b ) ;
a>b ? i++ : i--
i-- ; évaluation sans utiliser la valeur de i

Ensa de Tanger 65
L’opérateur séquentiel (,)
 L ’opérateur dit « séquentiel » permet d’exprimer plusieurs calculs
successifs au sein d’une même expression
 Exemple : a * b , i + j évalue d’abord a*b
a*b,, puis i+j et qui prend comme
valeur la dernière calculée (i+j)
 i++, a + b
 i++, j = i + k évaluation de l’expression i++
i++,, évaluation de l’affectation
j=i+k
 ces deux formulations sont équivalentes :
 i++, j = i+k, j--
j-- ; (avec des virgules)
 i++ ; j = i+k ; j--
j-- ; (avec des points virgules)
 Dans les boucles
 if (i++, k>
k>00) ...... remplace i++ ; if (k>0
(k>0) ......
 for (i=1
(i=1, k=
k=00 ; ... ; ... ) ....... remplace i=1
i= 1 ; for (k=0
(k=0 ; ... ; ... ) ......
Ensa de Tanger 66
L’opérateur sizeof

 L ’opérateur sizeof fournit la taille en octets


 Exemple, dans une implémentation où le type int est représenté sur 4
octets et le type double sur 8 octets
octets::

int n ;
double z ;
l’expression sizeof
sizeof(n)
(n) vaudra 4
l’expression sizeof
sizeof(z)
(z) vaudra 8
 sizeof(char)
sizeof (char) vaudra toujours 1
 Cet opérateur offre un intérêt :
lorsque l’on souhaite écrire des programmes portables dans lesquels il
est nécessaire de connaître la taille exacte de certains objets,
objets,

Ensa de Tanger 67
Exercices d’application
Exercice 1
Soit les déclarations suivantes :
int n = 10 , p = 4 ;
long q = 2 ;
float x = 1.75 ;
Donner le type et la valeur de chacune des expressions suivantes :
a) n + q
b) n + x
c) n % p +q
d) n < p
e) n >= p
f) n > q
g) q + 3 * (n > p)
h) q && n
i) (q-2) && (n-10)
j) x * (q==2)
k) x *(q=5)
Ensa de Tanger 68
Exercices d’application
Exercice 2
écrire plus simplement l’instruction suivante :
z = (a>b ? a : b) + (a <= b ? a : b) ;

Exercice 3
n étant de type int, écrire une expression qui prend la valeur :
-1 si n est négatif,
0 si n est nul,
1 si n est positif.

Ensa de Tanger 69
Exercices d’application
Exercice 4
Quels résultats fournit le programme suivant ?
#include <stdio.h>
main()
{
int n=10, p=5, q=10, r ;
r = n == (p = q) ;
printf ("A : n = %d p = %d q = %d r = %d\n", n, p, q, r) ;
n=p=q=5;
n += p += q ;
printf ("B : n = %d p = %d q = %d\n", n, p, q) ;
q = n < p ? n++ : p++ ;
printf ("C : n = %d p = %d q = %d\n", n, p, q) ;
q = n > p ? n++ : p++ ;
printf ("D : n = %d p = %d q = %d\n", n, p, q) ;
}

Ensa de Tanger 70
Atelier
Compilation des programmes avec DEV C++.

Ensa de Tanger 71

Vous aimerez peut-être aussi