Posté par Obsidian .
En réponse au journal c ansi.
Évalué à 6.
Aïe aïe aïe !
short <= int <= double
Un double est un nombre en virgule flottante ! c'est donc un float avec une mantisse étendue. A ne surtout pas comparer avec les entiers ...
Bon sinon, la taille d'un int seule est fonction de l'architecture de ta machine, donc 2 octets (comme un short) sur une machine 16 bits, 4 octets (comme un long) sur une machine 32 bits. C'est fait exprès. Cela correspond en général à la taille d'un registre du processeur (le plus souvent l'accumulateur).
char correspond à la taille d'un caractère. Depuis l'ASCII, on code les caractères sur 8 bits, mais si tu tombes sur une machine qui utilise l'Unicode en natif (une telle machine n'existe pas à ma connaissance), tu peux te retrouver avec un char=2 octets.
La taille des types de données natifs sera probablement réajustée avec le passage à 64 bits mais bon pour faire simple, disons que dans 99,99% des cas:
char = 1 octet
short int = 2 octets
int = 4 octets (car archi 32 bits le plus souvent)
long int = 4 octets
float = 4 octets
double = 8 octets
pour avoir des entiers très longs, il me semble que c'est "long long" (8 octets) ou "quad" (pareil), mais c'est à vérifier.
Enfin, s'il est vraiment vital pour toi de préciser impérieusement la longueur de ces données pour toutes les machines existant sur Terre et à venir (mais tournant sous Unix), jète un oeil aux fichiers types.h et sys/types.h, ils contiennent les définitions des types u_int8, u_int16 etc. qui en principe devraient toujours correspondre aux longueurs demandées.
[^] # Re: c ansi
Posté par Obsidian . En réponse au journal c ansi. Évalué à 6.
short <= int <= double
Un double est un nombre en virgule flottante ! c'est donc un float avec une mantisse étendue. A ne surtout pas comparer avec les entiers ...
Bon sinon, la taille d'un int seule est fonction de l'architecture de ta machine, donc 2 octets (comme un short) sur une machine 16 bits, 4 octets (comme un long) sur une machine 32 bits. C'est fait exprès. Cela correspond en général à la taille d'un registre du processeur (le plus souvent l'accumulateur).
char correspond à la taille d'un caractère. Depuis l'ASCII, on code les caractères sur 8 bits, mais si tu tombes sur une machine qui utilise l'Unicode en natif (une telle machine n'existe pas à ma connaissance), tu peux te retrouver avec un char=2 octets.
La taille des types de données natifs sera probablement réajustée avec le passage à 64 bits mais bon pour faire simple, disons que dans 99,99% des cas:
char = 1 octet
short int = 2 octets
int = 4 octets (car archi 32 bits le plus souvent)
long int = 4 octets
float = 4 octets
double = 8 octets
pour avoir des entiers très longs, il me semble que c'est "long long" (8 octets) ou "quad" (pareil), mais c'est à vérifier.
Enfin, s'il est vraiment vital pour toi de préciser impérieusement la longueur de ces données pour toutes les machines existant sur Terre et à venir (mais tournant sous Unix), jète un oeil aux fichiers types.h et sys/types.h, ils contiennent les définitions des types u_int8, u_int16 etc. qui en principe devraient toujours correspondre aux longueurs demandées.
Amuse-toi bien.