什么是Java中“long”的Objective C等价物

时间:2011-03-01 22:54:19

标签: objective-c

相当于Java中的'long'我们在Objective C,NSInteger中有什么?

3 个答案:

答案 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位值,longNSInteger都不能为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位整数)的类似物。

相关问题