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.
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.
Les pièges de l'Internet
Helix, réponse à une intrusion
"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton
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.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
merci de ta réponse il est vrai que je peux utiliser l'opérateur new.ça m'est sortit de la teteEnvoyé par Médinoc
.
Les pièges de l'Internet
Helix, réponse à une intrusion
"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton
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.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
Les pièges de l'Internet
Helix, réponse à une intrusion
"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #include <limits.h> ... cout<<CHAR_BIT<<endl;
pourais tu etre un petit plus explicite, st'plais
Les pièges de l'Internet
Helix, réponse à une intrusion
"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Hello,
sizeof : opérateur des langages C++ et C qui renvoie la taille d'un objet en bytes.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+
Partager