web-dev-qa-db-fra.com

Quelle est la valeur maximale de NSInteger?

J'ai besoin de stocker la valeur maximale d'un NSInteger dans un NSInteger? Quelle est la syntaxe correcte pour le faire? 

Merci. 

34
David

La valeur maximale d'un NSInteger est NSIntegerMax .

87
Chuck

La valeur maximale pour un NSInteger est NSIntegerMax

(from Foundation Constants Reference )

13
Mitch Wheat

Il m'a fallu un peu de temps pour que je réalise pourquoi j'obtenais une valeur différente de NSIntegerMax lorsque j'utilise NSUInteger!

Et le maximum pour un NSUInteger est NSUIntegerMax

(également de http://developer.Apple.com/library/ios/#documentation/cocoa/reference/foundation/Miscellaneous/Foundation_Constants/Reference/reference.html )

1
Andy B

Pour les modèles 32 bits et 64 bits, il existe deux conventions: A) ILP32 B) LP64

Le moteur d'exécution 32 bits utilise une convention appelée ILP32, dans laquelle les entiers, les entiers longs et les pointeurs sont des quantités de 32 bits. Le moteur d'exécution 64 bits utilise la convention LP64; les entiers sont des quantités de 32 bits et les entiers longs et des pointeurs sont des quantités de 64 bits. Ces conventions correspondent à l'ABI pour les applications fonctionnant sous OS X (et de manière similaire, les conventions de Cocoa Touch correspondent aux types de données utilisés dans Cocoa), ce qui facilite l'écriture de code interopérable entre les deux systèmes d'exploitation.

Tableau 1-1 tous les types d'entiers couramment utilisés dans le code Objective-C. Chaque entrée comprend la taille du type de données et son alignement prévu en mémoire. Les entrées de tableau en surbrillance indiquent les endroits où la convention LP64 diffère de la convention ILP32. Ces différences de taille indiquent les endroits où le comportement de votre code change lors de la compilation pour le runtime 64 bits. Le compilateur définit la macro LP64 lors de la compilation pour le runtime 64 bits.

 enter image description here

pour la plage maximale de 64 bits pour NSInteger est: LONG_MAX: 9223372036854775807

1
Aks