2010-01-21 18 views
135

Como el título dice que quiero preguntar acerca de los tipos de datos fundamentales en objetivo-c en iPhone. ¿Hay alguna buena documentación donde se escriba esto? Necesito el tamaño en que se representa la variable y el rango de la variable. Entonces en el ejemplo: short int - 2 bytes - signed: -32768 to 32767 and unsigned: 0 to 65535 Esto es solo un ejemplo. Entonces, si alguien conoce un sitio, escríbalo aquí. :)Tipos en objetivo-c en iPhone

Respuesta

333

Este es un buen resumen:

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

o ejecutar este código:

32 bits proceso:

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 

cuando se ejecuta en un iPhone 3GS (El iPod Touch y los iPhones más antiguos deben arrojar el mismo resultado) obtienes:

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 proceso de bits:

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

Tenga en cuenta que con el lanzamiento del SDK de iOS 7, algunos tipos son más grandes en el modo de 64 bits. – JeremyP

+13

Actualizado para proceso de 64 bits – jjxtra

+0

Respuesta impresionante realmente útil. Aunque es divertido, en Swift puedes declarar una "var" y dejarla en ese jaja :) –

20

Tenga en cuenta que también se puede utilizar el C99 tipos de anchura fija perfectamente en Objective-C:

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

El wikipedia page tiene un decente descripción de lo que está disponible en este encabezado si no tiene una copia del estándar C (debería hacerlo, ya que Objective-C es solo una pequeña extensión de C). También puede encontrar los encabezados limits.h y inttypes.h para ser útiles.

+0

También hay SInt32, UInt32, etc. (se usa mucho en Core Audio). –

12

actualización para el nuevo arco de 64 bits

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