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;
Valeur longue sans suffixe « L »
long oneYearWithoutL = 1000*60*60*24*365;
Représentation binaire
La différence entre les deux valeurs est visible dans leurs représentations binaires :
oneYearWithL : 011101010111101100010010110000000000 oneYearWithoutL: 01111111111111111111111111111111
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!