2009-12-21 7 views
0

Je souhaite afficher la valeur d'un NSUInteger à un moment donné. Je cède la valeur ci-dessous:Détermination de la valeur de NSUInteger

NSUInteger test = -1; 

ensuite essayer de voir dans le débogueur:

(gdb) po test 
Cannot access memory at address 0xffffffff 
(gdb) p test 
$1 = 4294967295 
Current language: auto; currently objective-c 

Autant que je sache, il est un type de valeur. Où est -1?

Répondre

14

Vous utilisez un NSUInteger, qui n'est pas signé. En tant que tel, toutes les valeurs négatives attribuées seront en fait interprétées de très grandes valeurs positives.

Vous souhaitez utiliser NSInteger qui est signé (et peut donc être à la fois des valeurs positives et négatives). Vous devriez alors être en mesure de faire (gdb) p test pour voir la valeur.

+0

Ce n'est pas non plus un pointeur vers un objet, ce qui est ce que l'on attend de lui. –

+0

Merci. Comment puis-je comparer une valeur NSInteger à une valeur NSUInteger? – 4thSpace

+0

Si vous savez avec certitude qu'ils se situent dans la plage de chevauchement, vous pouvez convertir NSUInteger en NSInteger afin de les comparer. Mais avant de mettre dans un catalogage, toujours soigneusement considérer si les nombres seront * toujours * dans une gamme appropriée. –

Questions connexes