Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Types in Objective-C on iOS

I want to ask about the fundamental data types in Objective-C on iOS.

I need the size on which the variable is represented and the range of the variable. So in example: short int - 2 bytes - signed: -32768 to 32767 and unsigned: 0 to 65535 This is only an example.

like image 708
Infinite Possibilities Avatar asked Jan 21 '10 07:01

Infinite Possibilities


People also ask

Can you still use Objective-C for iOS?

Objective-C is so pervasive in iOS that it's impossible to completely remove it. Apple continues to maintain libraries written in Objective-C, so we should expect Objective-C to be treated as a (mostly) first class language in iOS. At other companies, legacy code remains.

Should I learn Objective-C for iOS?

If you want to get work done, Objective-C is the way to go. Swift is the new kid on the block, but it's still a kid. If you want to get work done, Objective-C is the way to go. At the time of writing, Apple's software development kits are primarily written in C and Objective-C.

Is Apple getting rid of Objective-C?

When Objective-C migration is perfect and developers beg managers for permission, Apple will say, "You should really be using Swift", and discourage Objective-C. Years later, it may be deprecated, but it never will be removed. It powers iOS, and years after deprecation OS X still runs bits of Carbon.


2 Answers

This is a good overview:

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

or run this code:

32 bit process:

  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 

When run on an iPhone 3GS (iPod Touch and older iPhones should yield the same result) you get:

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 bit process:

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 
like image 177
Philippe Leybaert Avatar answered Oct 04 '22 20:10

Philippe Leybaert


Note that you can also use the C99 fixed-width types perfectly well in Objective-C:

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

The wikipedia page has a decent description of what's available in this header if you don't have a copy of the C standard (you should, though, since Objective-C is just a tiny extension of C). You may also find the headers limits.h and inttypes.h to be useful.

like image 45
Stephen Canon Avatar answered Oct 04 '22 18:10

Stephen Canon