【问题标题】:Determining value of NSUInteger确定 NSUInteger 的值
【发布时间】:2009-12-21 00:08:19
【问题描述】:

我想在任何给定时间查看 NSUInteger 的值。我分配以下值:

NSUInteger test = -1;

然后尝试在调试器中查看:

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

据我所知,它是一种值类型。 -1 在哪里?

【问题讨论】:

    标签: iphone objective-c cocoa-touch xcode


    【解决方案1】:

    您使用的是未签名的NSUInteger。因此,分配的任何负值实际上都会被解释为非常大的正值。

    您想使用带符号的NSInteger(因此可以是正值和负值)。然后您应该可以通过(gdb) p test 来查看值。

    【讨论】:

    • 它也不是指向对象的指针,这是 po 期望给出的。
    • 谢谢。如何将 NSInteger 值与 NSUInteger 值进行比较?
    • 如果您确定它们在重叠范围内,您可以将 NSUInteger 转换为 NSInteger 以便比较它们。但在进行类型转换之前,请务必仔细考虑数字是否总是在适当的范围内。
    • 您给出的单行几乎完全是矛盾的。你说你想要一个无符号的数字,然后你马上给这个数字一个负号。为什么不直接设置你使用 NSInteger 的值呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多