Что эквивалентно Objective C для 'long' в Java - PullRequest
4 голосов
/ 02 марта 2011

Эквивалент «long» в Java, что мы имеем в Objective C, NSInteger?

Ответы [ 3 ]

11 голосов
/ 02 марта 2011

В 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.

3 голосов
/ 02 марта 2011

Java-длина определяется как 64-битное значение со знаком, ни long, ни NSInteger не гарантируют это для Objective-C.Например, в 32-разрядных системах платформы NSInteger и long являются 32-разрядными знаковыми значениями.Если ваша платформа поставляется с заголовками C99 (например, когда ваш компилятор основан на gcc), то у вас должен быть stdint.h, который имеет независимые от платформы определения для целочисленных типов с гарантированными размерами.64-битный подписанный тип называется int64_t.

0 голосов
/ 02 марта 2011
#include <stdint.h>
int64_t someVariable; // 64 bit signed integer, like Java's long

Вы не спрашивали, но int32_t является аналогом типа int Java (32-разрядное целое число).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...