IOS 上 Objective-C 的类型

我想问一下 iOS 上 Objective-C 中的基本数据类型。

我需要表示变量的大小和变量的范围。 举个例子: Short int-2 byte-signed: -32768 to 32767 and unsigned: 0 to 65535短的 int-2字节符号: -32768到32767和无符号: 0到65535 这只是一个例子。

110986 次浏览

这是一个很好的概述:

Http://reference.jumpingmonkey.org/programming_languages/objective-c/types.html

或者运行以下代码:

32位进程:

  NSLog(@"Primitive sizes:");
NSLog(@"The size of a char is: %d.", sizeof(char));
NSLog(@"The size of short is: %d.", sizeof(short));
NSLog(@"The size of int is: %d.", sizeof(int));
NSLog(@"The size of long is: %d.", sizeof(long));
NSLog(@"The size of long long is: %d.", sizeof(long long));
NSLog(@"The size of a unsigned char is: %d.", sizeof(unsigned char));
NSLog(@"The size of unsigned short is: %d.", sizeof(unsigned short));
NSLog(@"The size of unsigned int is: %d.", sizeof(unsigned int));
NSLog(@"The size of unsigned long is: %d.", sizeof(unsigned long));
NSLog(@"The size of unsigned long long is: %d.", sizeof(unsigned long long));
NSLog(@"The size of a float is: %d.", sizeof(float));
NSLog(@"The size of a double is %d.", sizeof(double));


NSLog(@"Ranges:");
NSLog(@"CHAR_MIN:   %c",   CHAR_MIN);
NSLog(@"CHAR_MAX:   %c",   CHAR_MAX);
NSLog(@"SHRT_MIN:   %hi",  SHRT_MIN);    // signed short int
NSLog(@"SHRT_MAX:   %hi",  SHRT_MAX);
NSLog(@"INT_MIN:    %i",   INT_MIN);
NSLog(@"INT_MAX:    %i",   INT_MAX);
NSLog(@"LONG_MIN:   %li",  LONG_MIN);    // signed long int
NSLog(@"LONG_MAX:   %li",  LONG_MAX);
NSLog(@"ULONG_MAX:  %lu",  ULONG_MAX);   // unsigned long int
NSLog(@"LLONG_MIN:  %lli", LLONG_MIN);   // signed long long int
NSLog(@"LLONG_MAX:  %lli", LLONG_MAX);
NSLog(@"ULLONG_MAX: %llu", ULLONG_MAX);  // unsigned long long int

如果在 iPhone 3GS 上运行(iPod Touch 和老款 iPhone 应该会得到同样的结果) ,你会得到:

Primitive sizes:
The size of a char is: 1.
The size of short is: 2.
The size of int is: 4.
The size of long is: 4.
The size of long long is: 8.
The size of a unsigned char is: 1.
The size of unsigned short is: 2.
The size of unsigned int is: 4.
The size of unsigned long is: 4.
The size of unsigned long long is: 8.
The size of a float is: 4.
The size of a double is 8.
Ranges:
CHAR_MIN:   -128
CHAR_MAX:   127
SHRT_MIN:   -32768
SHRT_MAX:   32767
INT_MIN:    -2147483648
INT_MAX:    2147483647
LONG_MIN:   -2147483648
LONG_MAX:   2147483647
ULONG_MAX:  4294967295
LLONG_MIN:  -9223372036854775808
LLONG_MAX:  9223372036854775807
ULLONG_MAX: 18446744073709551615

64位进程:

The size of a char is: 1.
The size of short is: 2.
The size of int is: 4.
The size of long is: 8.
The size of long long is: 8.
The size of a unsigned char is: 1.
The size of unsigned short is: 2.
The size of unsigned int is: 4.
The size of unsigned long is: 8.
The size of unsigned long long is: 8.
The size of a float is: 4.
The size of a double is 8.
Ranges:
CHAR_MIN:   -128
CHAR_MAX:   127
SHRT_MIN:   -32768
SHRT_MAX:   32767
INT_MIN:    -2147483648
INT_MAX:    2147483647
LONG_MIN:   -9223372036854775808
LONG_MAX:   9223372036854775807
ULONG_MAX:  18446744073709551615
LLONG_MIN:  -9223372036854775808
LLONG_MAX:  9223372036854775807
ULLONG_MAX: 18446744073709551615

请注意,您也可以在 Objective-C 中很好地使用 C99固定宽度类型:

#import <stdint.h>
...
int32_t x; // guaranteed to be 32 bits on any platform

如果您没有 C 标准的副本,那么 维基百科页面可以很好地描述这个头部中提供的内容(但是您应该有,因为 Objective-C 只是 C 的一个小扩展)。您可能还会发现标题 limits.hinttypes.h很有用。

新的64位拱门更新

Ranges:
CHAR_MIN:   -128
CHAR_MAX:   127
SHRT_MIN:   -32768
SHRT_MAX:   32767
INT_MIN:    -2147483648
INT_MAX:    2147483647
LONG_MIN:   -9223372036854775808
LONG_MAX:   9223372036854775807
ULONG_MAX:  18446744073709551615
LLONG_MIN:  -9223372036854775808
LLONG_MAX:  9223372036854775807
ULLONG_MAX: 18446744073709551615