相当于Java中的'long'我们在Objective C,NSInteger中有什么?
答案 0 :(得分:11)
在Java中,long
总是64位。在C和Objective-C中,long
可能是64位,或者可能是32位,或者(在不太常见的情况下)它可能是完全不同的东西; C标准没有指定精确的位宽。
在OS X上,NSInteger
在64位平台上为64位,在32位平台上为32位。 32位Mac平台越来越少见,所以你可以使用NSInteger
并且没问题。
但是,如果您总是想要64位整数,那么您可能希望使用int64_t
中定义的stdint.h
数据类型。
答案 1 :(得分:3)
Java long被定义为带符号的64位值,long
和NSInteger
都不能为Objective-C保证这一点。例如,在32位系统平台上,NSInteger和long是32位有符号值。如果您的平台附带C99标头(例如,当您的编译器基于gcc时),那么您应该stdint.h
具有保证大小的整数类型的平台无关定义。 64位带符号类型名为int64_t
。
答案 2 :(得分:0)
#include <stdint.h>
int64_t someVariable; // 64 bit signed integer, like Java's long
您没有问,但int32_t
是Java的int
类型(32位整数)的类似物。