web-dev-qa-db-fra.com

Quelle est la différence entre Int et Int32 dans Swift?

Dans Core Data vous pouvez stocker Int16, Int32, Int64 mais il est différent de Int. Quelle est la raison de leur existence, comment les utilisez-vous?

42
János

Selon le Swift Documentation

Int

Dans la plupart des cas, vous n'avez pas besoin de choisir une taille d'entier spécifique à utiliser dans votre code. Swift fournit un type entier supplémentaire, Int, qui a la même taille que la taille Word native de la plateforme actuelle:

Sur une plate-forme 32 bits, Int est de la même taille que Int32.

Sur une plate-forme 64 bits, Int est de la même taille que Int64.

Sauf si vous devez travailler avec une taille d'entier spécifique, utilisez toujours Int pour les valeurs entières dans votre code. Cela facilite la cohérence et l'interopérabilité du code. Même sur les plates-formes 32 bits, Int peut stocker n'importe quelle valeur entre -2 147 483 648 et 2 147 483 647, et est suffisamment grand pour de nombreuses plages entières.

70
Jørgen R

Le nombre placé après le "Int" est une référence au nombre de bits qu'il utilise. Lorsque vous utilisez un int pour quelque chose de vraiment court ou presque inutile, comme un nombre en cours d'exécution du nombre d'objets dans une liste qui suivent un paramètre spécifique, j'utilise normalement un UInt8, qui est un entier qui a une valeur maximale de 256 (2 ^ 8), et une valeur minimale de 0, car il n'est pas signé (c'est la différence entre UInt8 et Int8). Si elle est signée (ou n'a pas de préfixe "U" pour la variable), elle peut être négative. Il en va de même pour Int16, Int32 et Int64. Le bonus pour l'utilisation d'un type Int de plus petite taille n'est pas très important, vous n'avez donc pas vraiment besoin de les utiliser si vous ne le souhaitez pas.

3
C1FR1

Il n'y a aucune économie de performance si vous utilisez un ordinateur portable ou un appareil iOS avec un processeur 32 bits ou 64 bits. Utilisez simplement Int. Le CPU n'utilise pas seulement 8 bits lorsque vous utilisez Int8, le CPU utilisera toute sa largeur de bit indépendamment de ce que vous utilisez, car le matériel est déjà dans la puce ...

Maintenant, si vous avez un processeur 8 bits, l'utilisation d'Int32 nécessiterait que le compilateur fasse un tas de backflips et de tours de magie pour faire fonctionner l'Int 32 bits

2
Mehdi Abderezai

Sur les plates-formes 32 bits, Int est de la même taille que Int32 et sur les plates-formes 64 bits, Int est de la même taille que Int64.

  • Int32: 4 octets: de −2147483648 à +2147483647
  • Int64: 8 octets: de −9223372036854775808 à +9223372036854775807

Une très bonne matrice de http://iossupportmatrix.com/ où vous pouvez trouver un processeur Arch pour un appareil spécifique.

Par exemple, si vous faites

Int(Date().timeIntervalSince1970 * 1000)

Il lance une erreur fatale sur l'iPhone 5 (Arch 32 bits): Thread 1: Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max. Mais sur iPhone 5S (Arch 62 bits) tout va bien.

enter image description here

En savoir plus ici

0
yoAlex5