Ketik dalam Objective-C di iOS


147

Saya ingin bertanya tentang tipe data mendasar di Objective-C di iOS.

Saya perlu ukuran yang mewakili variabel dan kisaran variabel. Jadi dalam contoh: int pendek - 2 byte - ditandatangani: -32768 hingga 32767 dan tidak ditandatangani: 0 hingga 65535 Ini hanya sebuah contoh.


Objective-C adalah lapisan tipis di atas C , artinya Anda mendapatkan tipe data fundamental yang samaC.
Cœur

Jawaban:


349

Ini adalah ikhtisar yang bagus:

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

atau jalankan kode ini:

Proses 32 bit:

  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

Saat dijalankan pada iPhone 3GS (iPod Touch dan iPhone yang lebih lama akan menghasilkan hasil yang sama) Anda dapatkan:

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 

Proses 64 bit:

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

6
Perhatikan bahwa dengan rilis iOS 7 SDK, beberapa jenis lebih besar dalam mode 64 bit.
JeremyP

13
Diperbarui untuk proses 64 bit
jjxtra

Jawaban yang mengagumkan sangat membantu. Lucu juga, di Swift Anda bisa mendeklarasikan "var" dan biarkan saja haha ​​:)

1
Mengapa int adalah 32 bit dalam prosesor 64 bit? Saya melihat ada sesuatu yang disebut LP64 di prosesor iphone A7, tapi saya tidak mengerti alasannya. Mungkin untuk kompatibilitas mundur atau warisan .... Saya tidak tahu. Adakah yang tahu alasannya?
Ricardo

1
Di mana UINT_MAX?
codehearted

20

Perhatikan bahwa Anda juga dapat menggunakan tipe lebar tetap C99 dengan sangat baik di Objective-C:

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

The halaman wikipedia memiliki deskripsi yang layak dari apa yang tersedia di header ini jika Anda tidak memiliki salinan dari standar C (Anda harus, meskipun, karena Objective-C hanya perpanjangan kecil C). Anda juga dapat menemukan tajuk limits.hdan inttypes.hberguna.


Ada juga SInt32, UInt32, dll. (Banyak digunakan dalam Core Audio).
Nicolas Miari

12

Perbarui untuk lengkungan 64bit baru

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.