Sku*_*pps 5 iphone xcode types integer objective-c
我想知道Integer 16,Integer 32和Integer 64之间的差异,以及有符号整数和无符号整数之间的差异(NSInteger和NSUInteger)
Car*_*rum 11
我不确定"Integer 16","Integer 32"和"Integer 64"的确切类型,但通常,这些数字是指整数类型的位大小.
有符号整数和无符号整数之间的差异是它可以表示的值的范围.例如,带二进制补码的16位整数可以表示介于-32,768和32,767之间的数字.无符号16位整数可表示0到65,535之间的值.
对于目前使用的大多数计算机,宽度的带符号的整数Ñ可以表示的值[-2 Ñ -1,2 Ñ -1)和宽度的无符号整数Ñ可以表示值[0,2 Ñ).
NSInteger和NSUInteger是Apple的自定义整数数据类型.第一个是签名而后者是未签名的.在32位建立,而在64位构建它的typedef为一个长NSInteger的被typedef为一个int.NSUInteger的typedef为32位无符号整数和64位无符号长整数.有符号类型覆盖范围[-2 ^(n-1),2 ^(n-1)],其中n是位值,无符号类型覆盖范围[0,2 ^ n].
编写单个自包含程序时,使用NSInteger或NSUInteger被认为是针对平台位更改进行面向未来的最佳实践.在处理固定大小的数据需求时,例如二进制文件格式或网络,这不是最佳实践,因为无论平台位级别如何,所需的字段宽度都是先前定义的并且是常量.这是在stdint.h(即,uint8_t,uint16_t,uint32_t的,等等)中定义的固定大小的类型来使用.