Je suis un peu confus sur l'ancien / nouveau et c'est ma question. Quel est le plus grand type de données primitive numérique dans l'ancien et dans la nouvelle norme C ++? (Entier et Point flottant) P>
Cordialement et merci à l'avance
Oups p>
3 Réponses :
regarder p>
Variables. Types de données. section Types de données fondamentales em> p>
Dans la norme de 1998, Dans le projet de standard pour C ++ 0x ( N3092 ), les types sont Les implémentations peuvent fournir des types plus importants au-delà de ce que la norme appelle. Vérifiez la documentation pour plus de détails à ce sujet. P> long int code> et non signé long int code> sont les types qui sont au moins aussi gros que l'une des autres types intégrés de la norme (§3.9.1 / 2-3). (Ils peuvent ou non être des types "les plus gros". Il est possible pour long int code> d'avoir la même taille que int code>, par exemple. Pour cette affaire, Char code> pourrait aussi être la même taille.) Le point flottant Double Long code> fournit au moins autant de précision que les deux autres types de points flottants (§3.9.1 / 8). p>
long long int code> et non signé long long long int code> (§3.9.1 / 2-3). Le type de point flottant le plus précis reste Long Double Code> (§3.9.1 / 8). P>
Cependant, c ++ 0x a
Juste pour l'enregistrement, la norme spécifie des tailles minimales, donc un long int code> ne peut jamais avoir la même taille qu'un caractère. De la mémoire, un int code> doit être d'au moins 16 bits de large et un long int code> au moins 32.
Et en C ++ 0X, même des opérations telles que Tailleof code> et que les choses peuvent générer des types encore plus gros que non signé long long code>, mais pas ainsi sur C ++ 03.
@jalf: Je pense qu'ils ne sont que des minimums du bit, donc char code> pourrait avoir la même taille que long code> si char_bit était 32, par exemple.
in c ++ 03, in c ++ 0x, Les types de points flottants non nommés avec précision ou de manière appropriée n'ont pas été introduits avec C99 ou C ++ 0x, évitez donc quelque chose comme long [int] code> et non signé long [int] code> ont la plus grande plage intégrale et Long Double code> a le plus grand FP précision et gamme. P>
intmax_t code> et uintMax_t code> a la plus grande gamme intégrale, et peut même être plus grand que long long code>. Par exemple, il serait raisonnable qu'une implémentation apporte à la fois long code> et long long code> 64-bit et faire intmax_t code> 128-bit. p>
intmax_t code> est simplement adopté à partir de C99, de sorte que votre implémentation prend en charge C99, vous n'avez pas besoin d'exiger C ++ 0x. Inclure simplement stdint.h code> au lieu de cstdint code>. L'utilisation des en-têtes "C-style" est parfaitement sûre de toute façon, bien que je ne suis pas sûr de vérifier s'il y a un bon moyen de rechercher C99 Typefs au sein de C ++. P>
float64_t code> ou floatmax_t code> si vous voulez la portabilité. p>
Je pense toujours que intmax_t code> aurait dû être nommé le plus long long int code>.