Maison > Java > javaDidacticiel > le corps du texte

Pourquoi l'ajout d'un suffixe « L » aux opérations de multiplication est-il important pour les valeurs longues ?

Susan Sarandon
Libérer: 2024-11-07 07:21:02
original
710 Les gens l'ont consulté

Why Does Adding an

Pourquoi des résultats différents des opérations de multiplication avec et sans suffixe « L » ?

Lors de la multiplication de nombres impliquant des valeurs longues, l'ajout d'un « L » " Le suffixe au littéral numérique est crucial pour obtenir des résultats précis. En effet, le type de données par défaut pour les littéraux numériques est int, qui a une plage plus petite que long et peut entraîner un débordement d'entier.

Valeur longue avec suffixe "L"

long oneYearWithL = 1000*60*60*24*365L;
Copier après la connexion
  • Le littéral 1000*60*60*24*365L est explicitement converti en long en utilisant le Suffixe "L", garantissant que le résultat est stocké sous la forme d'une valeur de 64 bits. Cette valeur représente avec précision le nombre de secondes dans une année.

Valeur longue sans suffixe « L »

long oneYearWithoutL = 1000*60*60*24*365;
Copier après la connexion
  • Le littéral numérique 1000 *60*60*24*365 est implicitement converti en int puisqu'aucun suffixe "L" n'est présent. Le résultat est un entier de 32 bits, qui déborde car la valeur est en dehors de la plage de int. Ce débordement entraîne un calcul incorrect.

Représentation binaire

La différence entre les deux valeurs est visible dans leurs représentations binaires :

oneYearWithL  : 011101010111101100010010110000000000
oneYearWithoutL: 01111111111111111111111111111111
Copier après la connexion

Le "1" dans le bit le plus significatif de oneYearWithL indique une valeur positive, tandis que le "0" dans le bit le plus significatif de oneYearWithoutL indique un débordement entraînant une valeur négative.

Conclusion

Lors de la multiplication de nombres impliquant des valeurs longues, l'utilisation explicite du suffixe "L" garantit que le résultat est stocké avec précision comme une valeur de 64 bits. Négliger d'ajouter le suffixe "L" peut conduire à des calculs incorrects en raison d'un dépassement d'entier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!