2011-08-07 4 views
0

Beaucoup de nouveaux noms de type de données ++ C ont un seul nom de mot, par exemple:A "long double" un seul nom de mot?

  • int16_t au lieu de signer short int
  • int64_t au lieu de signer long int
  • ...

A "long double" un nom de mot unique?

+0

double possible de [taille fixe flottante types de points] (http://stackoverflow.com/questions/2524737/fixed-size-floating-point-types) – stakx

+0

Il est reproduit pas exactement, comme @ Armin ne savait pas ce que sont exactement 'intXX_t'. –

+2

Cela n'aurait aucun sens d'avoir un "type à virgule flottante de 64 bits" de toute façon. Vous auriez besoin d'un type «mantisse 48 bits, 1 bit, exposant 15 bits» pour être entièrement portable. Contrairement aux entiers, les types à virgule flottante ont une structure interne. – MSalters

Répondre

1

Non, int16_t ne signifie pas toujours short etc. int16_t etc sont des types entiers de taille spécifiée, alors que la taille de short etc est non spécifiée. Vous n'avez pas besoin de telles choses pour les types à virgule flottante, car leurs tailles sont spécifiées.

+2

Etes-vous sûr que les tailles de tous les types à virgule flottante sont spécifiées par la norme et ne sont pas spécifiques à la plate-forme? –

+0

Eh bien, je suppose que C++ 98 nécessite IEEE754. Malheureusement, ce n'est pas le cas. – wRAR

+0

Donc, les tailles ne sont pas fixes? :) –

-1

Je ne crois que oui, mais vous pouvez tout simplement faire vos propres

#define double64_t (long double) 
typedef long double double64_t; 
+2

Bien sûr, mais c'est trompeur si long double n'est pas 64 bits. –

5

Ce ne sont pas des noms longs/courts. "Noms" comme long int, short int, etc sont d'habitude, MAIS spécifique à la plate-forme et faire pas ont une taille fixe. Par exemple, long int pourrait être 4B ou 8B.

Alors que les noms comme intXX_t est le type entier avec taille fixe garanti - XX les bits.

Et non, il y a une telle chose dans la norme C++ pour double.

Pour plus d'informations sur la taille fixe types à virgule flottante: Fixed-size floating point types

+0

lol, downvote pour? –

0

Je ne pense pas. int16_t et d'autres sont définis dans stdint.h. Rien de tel n'existe pour float/double. BTW, long est un modificateur de type et double est un type de données.

En C++, vous pouvez définir votre propre classe double et la rendre utilisable en surchargeant les opérateurs.

Shash