Selon le lien https: //www.geeksforgeeks. org / types de données-in-C / 2 em> p>
Si nous supposons et similaire S'il vous plaît dire ce qui sera la plage de long int code> prend 8 octets (64 bits), sa plage doit alors être de -2 ^ 63 à 2 ^ 63-1, mais cela n'est pas donné dans le lien ci-dessus. Pourquoi est-ce tellement? P>
non signé long int code> devrait avoir une plage comprise entre 0 et 2 ^ 64. P>
float code>,
double code> et
long double code> car il n'est pas mentionné dans le lien. P>
4 Réponses :
Je préférerais ne pas utiliser geeksforgeeks comme source de connaissances. Il existe plus d'informations "imprécises" sur cette page
C standard définit des gammes minimales des types d'entier p> de sorte que l'entier n'est donc pas minimum de 32 bits mais 16 bits. La taille réelle peut être vérifiée dans le c standard définit également la plage minimale des types de points flottants - mais vous devez vérifier votre fichier Les valeurs données dans la liste suivante doivent être remplacé par la mise en œuvre définie
expressions constantes avec des valeurs supérieures ou égales à celles illustrées: p> Les valeurs indiquées dans la liste suivante doivent être remplacées par des expressions constantes définies par la mise en œuvre avec des valeurs (positives) qui sont inférieurs ou égaux à ceux représentés: p> limites.h code> définit (ceci provient de la norme C): p>
.h code> pour les valeurs de mise en œuvre. p>
Il n'y a pas vraiment une plage qui peut être spécifiée pour addendum: strong> Les valeurs dépendent également de la plate-forme, les valeurs ci-dessus s'appliquent au x86 plate-forme. Il n'y a pas de type de point flottant 80 bits sous bras . p>
Références: P>
float code>,
double code> et
long double code>, car ce sont des nombres de points flottants. Alors que la distance entre les entiers est toujours 1, il existe différentes distances entre les numéros individuels des nombres de virgule flottante (la distance augmente avec des nombres plus grands), et donc aussi le plus petit nombre représentable en termes de montant: P>
float code> est une valeur 32 bits comprenant une 23 mantissa, un exposant 8 bits et un bit 1 signe. La valeur minimale ici est -3,40 ∙ 10³⁸ et le maximum de 3,40 ∙ 10³⁸. La plus petite valeur représentable en quantité est de 1,18 ∙ 10 ⁻³⁸. Li>
Double code> est une valeur de 64 bits comprenant une 52 mantissa, un exposant 11 bits et 1 bit de signe. La valeur minimale ici est de 1,79 ∙ 10³⁰⁸ et le maximum de 1,79 ∙ 10³⁰⁸. La plus petite valeur représentable en quantité est de 2,23 ∙ 10⁻³⁸. Li>
Long Double Code> est une valeur de 80 bits comprenant une 64 MANTISSA, un exposant 15 bits et 1 bit de signe. La valeur minimale ici est -1,18 ∙ 10⁴⁹³² et le maximum de 1,18 ∙ 10⁴⁹³². La plus petite valeur représentable en quantité est de 3,37 ∙ 10⁻⁴⁹³². Li>
ul>
Volume 1 - Chapitre 4: Types de données Appliquer à IEEE Standard 754 LI>
ul>
C Standard ne spécifie pas les chiffres que vous avez montrés. C'est l'une des nombreuses implémentations possibles
Les gammes finies de flotteur, double, long double code> incluent le
+ - flt_max, + -dbl_max, + -ldbl_max code>. Commun
float code> la plus petite valeur représentable en quantité est ~ .14 ∙ 10⁻⁴⁴, pas 2.23 ∙ 10⁻³⁸. Common
double code> la plus petite valeur représentable en quantité est ~ 4,94 ∙ 10⁻³²⁴, pas 2.23 ∙ 10⁻³⁸.
Long Double Code> ON X86 n'est pas certainement 10 bits et souvent 16 bits avec un Binary64 gamme ou même 8 bits - dépend du compilateur / des options. Les descriptions de FP de Mantissa sont absentes et plus comme une signification tronquée.
Si nous supposons
long int code> prend 8 octets (64 bits), sa plage doit être
-2 ^ 63 code> à
2 ^ 63-1 code >, mais cela n'est pas donné dans le lien ci-dessus. Pourquoi est-ce tellement? P> blockQuote>
Parce que geeksforgeeks em> est une source connue d'incorrecture et de fausseté. Ne faites pas confiance en eux. Faites confiance aux normes officielles et aux auteurs établis avec des décennies d'expérience (comme vous pouvez trouver ici le débordement de la pile - moi exclu: -)). P>
Guide de livres C définitif et liste P>
Dans cette liste, vous pouvez trouver des livres de qualité supérieure. P>
à côté de ce
long int code> est généralement sur la plupart des implémentations de la même taille qu'un
int code>, 4 octets. P>
Mais comme vous l'avez dit, c'est une hypothèse, il est complètement correct de demander. P>
Si nous supposons que longtemps int prend 8 octets (64 bits), sa portée doit être de -2 ^ 63 à 2 ^ 63-1, mais cela n'est pas donné dans le lien ci-dessus. pourquoi est-ce tellement? p> blockQuote>
Parce que c est spécifié de manière à créer des implémentations entièrement conformes à être créées pour les plates-formes qui font
non forts> suivent l'une de vos hypothèses - que long int code> prend 8 octets et que la valeur est codée dans le complément de deux. p>
La standard vous donne
code> qui contiendra les limites de long int code> sur la plate-forme donnée,
long_max code> et
et
Long_min code> et la seule garantie que vous avez donnée est que l'une quelconque de la valeur ne sera pas moins en ampleur que
2147483647 code> (2 ^ 32-1), respectivement. P>
C'est une bonne idée de ne pas faire d'hypothèses sur des spécificités de la plate-forme et de garder votre code portable de cette façon. P>
Long int code> est sur de nombreuses plates-formes égales à juste
int code>. Vous pouvez utiliser
long long int code> pour utiliser un entier 64 bits.
La bonne réponse est la suivante: cela dépend de la manière dont le compilateur les implémente. La norme C nécessite uniquement une taille minimale i> que ces types ont
#include code> et
long_min <= long_min <= long_value <= long_max code>,
[ulong_min =] 0 <= non signé_long_value <=. = ULONG_MAX CODE>
Il ressemble à une erreur: pour
long int code> et
non signé long int code> La page dit 8 octets (64 bits) mais donne la plage de 4 octets (32 bits)
@Weathervane: Ensuite, la plage est correcte car standard uniquement Mandats
long code> pour contenir au moins 32 bits.
Pour le point flottant, il y a un tas de
définit code> dans code>
Les types de données C sont bien définis ici: en.wikipedia.org/wiki/c_data_types
@Sergeballesta La page n'est pas cohérente: c'est la plage 32 bits, mais la page dit 8 octets. Cela semble être ce que peut demander: pourquoi dit-il 8 octets mais donne cette gamme et ma réponse est que la page a commis une erreur.
La table dans le lien que vous avez affiché est incorrecte. Il affiche
long code> comme ayant une taille de 64 bits mais seulement une plage de 32 bits incompatible. Dans tous les cas, la taille réelle dépend de la plate-forme ..
Merci interjay.
Long code> sur Windows est de 32 bits. Sur 32 bits Linux, il est 32 bits. Sur 64 bits Linux, il est 64 bits.