Initiation au C   cours n8
30 pages
Français

Initiation au C cours n8

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
30 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Conversions de typesAllocation dynamique de m´emoireInitiation au C◦cours n 8Antoine Min´e´Ecole normale sup´erieure12 avril 2007◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 8Conversions de typesAllocation dynamique de m´emoirePlan du coursConversions de types : l’op´erateur (type).Allocation dynamique de m´emoire : malloc, realloc, free.◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 8Conversions de types Conversions de types arithm´etiquesAllocation dynamique de m´emoire Conversions de types pointeursConversions de types◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 8Conversions de types Conversions de types arithm´etiquesAllocation dynamique de m´emoire Conversions de types pointeursRappels sur les types entiersTypes entiers sur un Intel 32-bittype sizeof ensemble repr´esent´echar, signed char 1 [−128,127]unsigned char 1 [0,255]short 2 [−32768,32767]unsigned short 2 [0,65535]31 31int, long 4 [−2 ,2 −1]32unsigned, unsigned long 4 [0,2 −1]63 63long long 8 [−2 ,2 −1]64unsigned long long 8 [0,2 −1]Calculs dans les entiers :8×sizeofnon-sign´es : calcul modulo 2 ,sign´es : r´esultat al´eatoire en cas de d´epassement de capacit´e,erreur `a l’ex´ecution en cas de division par 0 (/ ou %).◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 8Conversions de types Conversions de types arithm´etiquesAllocation dynamique de m´emoire Conversions de types ...

Informations

Publié par
Nombre de lectures 11
Langue Français

Extrait

otnAe´niMeniroamelus´cEloneeInitiatp´erieursruo8nanoicCu
AntoineMine´
12 avril 2007
Conversions de types Allocationdynamiquedeme´moire
´ Ecolenormalesupe´rieure
Initiation au C cours n8
ConvlAsepytedsnoisrequminadyonticaloemedmo´eeirMeniotnicEloe´´AnioatuCnaeIurtini´puseireroneelam8
Allocationdynamiquedeme´moire:malloc,realloc,free.
Plan du cours
Conversionsdetypes:lop´erateur(type).
cuosrn
orenlemap´suieerIeruitinoitaCuanAnotniMenie´´cElo
de
Conversions
types
8
Conversions de types Allocationdynamiquedem´emoire
Conversionsdetypesarithm´etiques Conversions de types pointeurs
srncuo
lmodalcues:cign´s,giezfo×8islu2oalatltsu´e:resn´dedsacneeriotae´lscunsdaalCn:srs-noeseleitnA.tnuo)%iM´nioencolee´Ealesnormueire´puaitinIerCauonti8snurcoe´apssmenedtcepaacit´e,erreur`al´xetuceenoisacndidesivipaon(/r0
Types entierssur un Intel 32-bit
sizeof 1 1 2 2 4 4 8 8
Rappels sur les types entiers
type char,signed char unsigned char short unsigned short int,long unsigned,unsigned long long long unsigned long long
ensemblerep´t´e resen [128,127] [0,255] [32768,32767] [0,65535] [2312311] , [0,2321] [263,2631] [0,2641]
vnoCAlesypetsdonsierepytirasoisredsnsCueveonm´thiqetydanimuqolacitnoireConveedem´emosruetndensiorsoisppety
oispeuntdenspetysrsarithm´nsdetypenoevsroiteqieuCsemedquminadyontioisrevnoCeriome´ersiConvolacselAtepynodsonmrlaseeE´oceloineMin´Ant
Calculs dans les flottants : calculsarrondis`alapre´cisiondutype, nombressp´eciaux:+,−∞,NaN.
pre´cision 107 1016 1019
Rappels sur les types flottants
max 3×1038 10308 104912
Types flottantssur un Intel 32-bit typesizeofmin float4 1045 double8 5×10324 long double12 104933
Cauonti8snurcoueire´puaitinIer
Conversi´etiquesseratimhnodstepysuropseetnidsnopyteedytoisnllcoepAsversConeriome´misrevnoCynndioatdeueiqamoineAnt
Letypedonneuncompromisentrelexpressivite´etlecouˆt (memoire et temps). ´
Lase´mantiqueestdonn´eeparletypedesargumentslpoed.teur´era
Choixduntypearithme´tique
8ns
c = a % b; /* modulo entier */ z = x % y; /* ERREUR */
c=a/b;/*divisionentie`re(troncature)*/ z = x / y; /* division flottante */
Exemple int a,b,c; double x,y,z;
Letypede´nitlas´emantiquedesop´erations.
ontiiaiturcoCaupue´laseernIiruee´EMin´normcole
*/
Exemple int x,y; double d; d = (double)x / (double)y; /* division flottante
Effet :convertit la valeur deexprnsletypepr´ecis´.ead
Attention`latiroede´trofirpeurteoplra´e(type): a Exemple :(int)x+ysignifie((int) x)+yet non(int)(x+y).
Conversions explicites de types
Syntaxe (type)expr
Op´erateurdeconversion de type(casten anglais).
n8oursuCcionaniMenie´nAotinIetaitre´prueimaorsuleEc´enolesypetsdonsiernvoCeriome´medeuqiynamiondocatsAllytepsnedsroinoevsniopruetsdetypesnversionituqseoCratimhe´C
llocpesAndynatioevsrCnoedytoisnsiernvCoypetsdonedeuqimaeriome´mti´eesquareshmitdsnopytevnoCisreursespointeitIntiiaauoncoClamrpuseire´erueneMin´e´EcolenoAtnio
encasdede´passementdecapacit´e: sitypetoteset+s:llteartt´aenstuou−∞, 8×sizeof sitypesirptseatltsu´eer:l´egnnoissentmodulo 2, sityperee´ustlisnge´l:estatenihelddacamd´enep.
silavaleurestrepr´esentableexactementdanstype, =la valeur est´engeiahcn,
en cas de conversion flottantentier, =la valeur estqnortee´u,
Exemples (int) (1.5 + 0.5) /* donne 2 */ (int) (1.0 + 0.5) /* donne 1 */ (unsigned char) (-1) /* donne 255 */
R`eglesdeconversion:
Effet sur les valeurs
8snur
n8uosrCucoiantiateIniieurp´eruselamronelocE´´eineMintoAntepyseopnietrus
lorsdesope´rationsbinaires:promotion vers un type commun, int<long<long long<float<double<long double Exemple : ;int x=6 ; x=x*0.5multiplication endouble.
t
double d = 1 ;conversion de1deintversdouble int x = d+0.5 ;troncature ded+0.5dedoubleversint
ep
lors des appels de fonctions : vers letype des arguments, Exemple :fputf(2.5, f) ;(exception :printf)
y
lors desaffectations,initialisations: vers le type de lalvalue,
s
Conversions implicites de types
e
Exemple
r
Conversionsimplicites:tue´aojlrCeseap.
atimhe´itquesConversionsdnydnqimaedeume´mreoinvCosiersdonCnooisnevsrpesAdetyatiolloc
densiorsoisppetyqite´mhtevnoCseusrtnueotnAeiru´preelusroamolen´Ecin´eineM
y1, int x2, int
int interpol(int x1, int { return y1 + ((y2-y1) / }
Calculs en entiers
Exemple:interpolationlin´eaire
x)
int
y2,
(x2-x1)) * x ;
sruo8nnaiocuCnieIattivnoCetypesAlersionsdydanimuqolacitnoeCirveonemedmo´eepytirasoisredsn
8
Exemple:interpolationline´aire
Calculs en flottants
int interpol(int x1, int y1, int { return y1 + ((double)(y2-y1) }
x2, int y2, int x)
/ (x2-x1)) * x ;
CocrunsaiitnouareeuitInupesri´eonellamre´nocE´psepytedsnoisrevrseuntoiepasedytoisnevsrsConiquem´etrithydnoimanollAitacirmooneCedqu´eemoCsdetypesnversionAiMeniotn
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents