Pourquoi des résultats de multiplication différents avec et sans "L" ?
En Java, l'opération de multiplication produit des résultats différents lors de l'utilisation du "L" suffixe pour l'un des opérandes.
Ajout de "L" pour une valeur longue correcte
L'ajout de "L" garantit que le résultat est une valeur longue. En multipliant des nombres entiers, le résultat est également un nombre entier. Si le résultat dépasse la plage d'un entier (2147483647 à -2147483648), il déborde et devient négatif.
En ajoutant "L" à 365 dans l'expression, vous précisez explicitement qu'il s'agit d'une valeur longue. Cela garantit que le résultat de sa multiplication avec les autres entiers est une valeur longue et n'est pas tronquée à la plage entière.
Sans "L" : résultat entier incorrect
Lorsque vous multipliez des entiers sans « L », le résultat est un entier. Si le résultat dépasse la plage entière, il "s'enroule" et devient une valeur différente.
Par exemple, la multiplication 1000606024365 sans ajouter " L" donne le résultat incorrect 1471228928. En effet, le résultat 31536000000 déborde de la plage entière et devient -1702967296 (la représentation en complément à 2 de 31536000000).
Représentation binaire
Les représentations binaires des deux résultats montrent la différence :
Lorsque vous n'ajoutez pas "L", les quatre bits les plus significatifs sont tronqués, ce qui entraîne une représentation incorrecte 010101111011000100 10110000000000, qui correspond au résultat incorrect.
Autres considérations
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!