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 tete .Envoyé 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.
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
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;
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
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; }
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
OK un grand merci seriousme
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
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+
quelle mesure y a-t-il en dessous de l'octet et comment fait-on pour la calculer?Envoyé par Foobar1329
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
Hello,
En dessous,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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager