奇怪的NSNumber分配表达式

问题描述 投票:0回答:1

请考虑以下几点 NSNumber 实例。

NSNumber *b1 = @((long)(-61));
NSNumber *b2 = @((long)(-62));

NSLog(@"%@", b1);
NSLog(@"%@", b2);

在 "调试区 "的 "变量视图 "中显示了奇怪的数值。

enter image description here

有人知道这个调试器的信息吗?

objective-c xcode nsnumber
1个回答
1
投票

0xffffffffffffffc3 是十六进制表示的 -61. 0x00ffffffffffffc3 是十六进制的代表 72057594037927875.

在 "调试区 "的 "变量视图 "中,正确地表示负值的问题。long 的值 NSNumber.

enter image description here

具有讽刺意味的是,如果你使用一个 unsigned long 的基本价值。NSNumber (见 value4b4 在上面的屏幕快照中),变量视图现在将显示为 -61.

但是,这只是一个错误,在显示的 NSNumber 变量视图 "中的实例。实际的 NSNumber 值都不错。

© www.soinside.com 2019 - 2024. All rights reserved.