NSNumber具有unsignedIntValue和unsignedLongValue。我以为他们是一样的?

时间:2012-08-26 21:38:39

标签: objective-c types nsnumber

默认情况下我认为unsigned int意味着unsigned long int(32位)。同样,我认为unsigned long默认为unsigned long int(32位)。为什么NSNumber上的两个选择器(unsignedIntValueunsignedLongValue),或者我应该担心数据类型的位长?

谢谢!

2 个答案:

答案 0 :(得分:4)

在LP64(Mac OS 64位)上,long为64位宽,而int只有32位。

答案 1 :(得分:2)

我理解OSX和iOS的架构有限,但一般来说,除了标准中保证的基本相对顺序之外,你不应该对整数大小做任何假设。

如果您确实需要特定大小的整数值,请使用uint8_t,uint16_t,uint32_t和uint64_t类型。