bonjour à tous,
j'aimerai savoir s'il serai possible de connaitre l'espace occupé d'une variable en octet,pour pouvoir ensuite l'affichée.
Il me semble qu'il faut utiliser l'opétateur sizeof mais j'aimerai en avoir la confirmation.
Version imprimable
bonjour à tous,
j'aimerai savoir s'il serai possible de connaitre l'espace occupé d'une variable en octet,pour pouvoir ensuite l'affichée.
Il me semble qu'il faut utiliser l'opétateur sizeof mais j'aimerai en avoir la confirmation.
c'est bien le cas.
Par contre, n'utilise pas sizeof pour un tableau alloué dynamiquement : Tu n'auras droit qu'à la taille du pointeur (par contre, tu peux demander la taille d'un élément pointé)
En fait, sizeof est surtout utilisé:
- En C, pour l'allocation dynamique. N'est plus utilisé en C++ à cause de l'opérateur new, sauf pour des structures à taille variable.
- À des fins de débogage, pour afficher directement le contenu binaire d'une variable. Si j'ai bien compris ta question, c'est l'usage que tu veux en faire?
- Lors de transmission/écriture de données binaires avec des sockets ou des fichiers.
merci de ta réponse il est vrai que je peux utiliser l'opérateur new.ça m'est sortit de la tete :? .Citation:
Envoyé par Médinoc
sizeof retourne la taille en nombre de bytes. En général les bytes sont des octets mais pas toujours et dans les cas où ils ne le sont pas, le résultat est plus pertinent.Citation:
Envoyé par smoove
Si tu veux la taille en nombre de bits, multiplie le résultat de sizeof par CHAR_BIT qui se trouve dans limits.h (qui vaut au moins 8, et qui vaut exactement 8 sur les machines où les bytes sont des octets).
Note par définition: un char prend un byte.
alors la je suis désolé , je ne voi pas comme déclarer <limits.h> et char_bits en utlisant l'opérateur sizeof.
est-ce-que tu pourai me montrer un bout du programme ça serai sympa,
Merci
Code:
1
2
3 #include <limits.h> ... cout<<CHAR_BIT<<endl;
pourais tu etre un petit plus explicite, st'plais
Code:
1
2
3
4
5
6
7
8 #include <limits.h> #include <iostream.h> int main(void){ cout<<"un int occupe "<<sizeof(int)*CHAR_BIT<<" bits."<<endl; return 0; }
OK un grand merci seriousme
Hello,
sizeof : opérateur des langages C++ et C qui renvoie la taille d'un objet en bytes.Citation:
Envoyé par smoove
Un byte = un certain nombre de bits, 8 au minimum.
Si tu veux connaitre le nombre de bits qu'utilise un byte dans ton implémentation, tu as dans un fichier d'entête <limits.h> ( ou <climits> ) une macro appelée CHAR_BIT qui te donne ce nombre de bits. Souvent c'est 8 (le minimum) mais cela peut être plus (16 bits par exemple).
Donc si c'est uniquement la taille en bytes qui t'intéresse, sizeof est tout indiqué.
Si c'est en octets (8 bits, pas plus, pas moins), et que CHAR_BIT de ton <limits.h> vaut 8, sizeof tout seul est ausi OK.
Si c'est en octets (8 bits, pas plus, pas moins), et que CHAR_BIT de ton <limits.h> est différent de 8, il faut utiliser CHAR_BIT pour connaitre le nombre d'octets.
nb Bytes (objet) = sizeof (objet)
nb Octets (objet) = sizeof (objet) * CHAR_BIT / 8
A+
quelle mesure y a-t-il en dessous de l'octet et comment fait-on pour la calculer?Citation:
Envoyé par Foobar1329
Hello,
En dessous,Citation:
Envoyé par smoove
Il y a le "nibble" ou "nybble" qui est la moitié d'un byte. Aussi, toujours par abus de langage, comme le byte vaut très souvent 8 bits, le nibble vaut très souvent 4 bits. C'est un quartet. C'est un terme qui désigne souvent un digit hexadecimal.
Pour savoir combien de quartets fait un objet, c'est sizeof(objet) * CHAR_BIT / 4
Et encore en dessous, et bien, c'est le bit.
A+
ok merci