8
votes

Pourquoi Tailleof (13.33) est 8 octets?

Lorsque je donne tailleOf (a) , où a = 13.33 , une variable de flotteur, la taille est de 4 octets. Mais si je donne tailleof (13.33) directement, la taille est de 8 octets.

Je ne comprends pas ce qui se passe. Quelqu'un peut-il aider?


3 commentaires

Mec, arrêtez d'ajouter et de supprimer la balise math pour cogner cette question au sommet.


essayez plutôt 13.ft et renvoyez également ce lien Stackoverflow.com/Questtions/2331751/...


Pourquoi la valeur du point flottant telle que 3.14 est considérée comme double par défaut dans MSVC?


5 Réponses :


19
votes

Le littéral 13.33 est traité comme une valeur de point flottante à double précision, 8 octets large.


1 commentaires

Pour marquer explicitement un nombre littéral en tant que flotteur de précision unique, essayez 13.33f . Taille de (13.33F) Retourne le 4 attendu.



13
votes

Le 13.33 littéral est traité comme «double», pas «flotteur».

essayer 13.33f à la place.


0 commentaires

8
votes

parce que 13.33 est un double , qui est tronqué à un float si vous l'attribuez. Et un double est 8Bytes. Pour créer un véritable flotteur, utilisez 13.33f (notez le f ).


0 commentaires

44
votes

Ce sont les règles de la langue.

13.33 est un littéral numérique. Il est traité comme un double parce que c'est un double. Si vous voulez que 13.33 soit traité comme littéral float, vous indiquez 13.33f.

13.33 est un double littéral. Si la taille de (float) == 4, Tailleof (13.33F) == 4 devrait également être maintenue car 13.33F est un littéral flottant.


0 commentaires

9
votes

Le type et la taille de votre variable sont bien. C'est juste que le compilateur a quelques types par défaut pour les littéraux, ces valeurs constantes codées rigoureuses dans votre programme .

Si vous demandez Tailleof (1) , vous Obtenez Tailleof (int) . Si vous demandez Tailleof (2.5) , vous obtiendrez Tailleof (double) . Celles-ci s'intégreraient respectivement dans un char et un float, mais le compilateur a des types par défaut pour vos littéraux et les traitera comme tel jusqu'à l'attribution.

Vous pouvez remplacer ce comportement par défaut. Par exemple: xxx

acclamations!


0 commentaires