Opérateur sizeof

Fermé
Mourad - Modifié par Mourad le 12/02/2016 à 02:07
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 févr. 2016 à 17:10
Bonsoir ,
je me trouve en confusion lorsque j'ai fait l'execution de ce code en C
 
double n=5.2;
char c=127;
printf("%d\t%d\t%d\t%d\t%d ",sizeof(!n),sizeof(c),sizeof(3*c),sizeof((int)c));


Resultat :
Success time: 0 memory: 2160 signal:0
4 1 4 4
Quelq'un peut t-il m'eclaircir le résulat et merci

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
12 févr. 2016 à 08:44
Bonjour,

l'operation ! retourne toujours un int qui vaut 1 ou 0, donc taille 4
sizeof(char) vaut 1 par définition
int * char => int donc taille 4
après conversion on a un int donc taille 4
0
un int est codé sur 2 octet en langage C !!
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > frustr14
12 févr. 2016 à 15:44
En langage C, un
int
est classiquement codé sur la taille d'un registre processeur
un système 8 ou 16 bits => 2 octets
un système 32 bits => 4 octets
un système 64 bits => 8 octets (sauf pour Windows64 où il ne fait que 4 octets)

et un
char
est la plus petite unité accessible d'au moins 1 octet :
=> 1 octet sur beaucoup de machines, sauf certains embarqués (par exemple TMS320) où il fait 2 octets.

et les autres types intégraux sont définis par l'inégalité :
char <= short <= int <= long int <= long long int
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 févr. 2016 à 17:10
Tout à fait d'accord avec Dalfab.
Un char vaut 1 byte d'au moins 8 bits. Donc classiquement, un char est représenté sur 1 octet.
Le reste découle de l'inégalité.
0