Objective-C資料型別


在Objective-C程式設計語言中,資料型別是指用於宣告不同型別的變數或函式的擴充套件系統。 變數的型別決定了它在儲存中佔用的空間大小以及如何解釋儲存的位元型樣。

Objective-C中的型別可分為以下幾類 -

編號 型別 描述
1 基本型別 它們是算術型別,由兩種型別組成:(a)整數型別和(b)浮點型別。
2 列舉型別 它們又是算術型別,用於定義只能在整個程式中分配某些離散整數值的變數。
3 void型別 型別說明符void表示沒有可用的值。
4 派生型別 它們包括(a)指標型別,(b)陣列型別,(c)結構型別,(d)聯合型別和(e)函式型別。

陣列型別和結構型別統稱為聚合型別。 函式的型別指定函式返回值的型別。 我們將在下一節中看到基本型別,而其他型別將在後續章節中介紹。

1. 整數型別

下表提供了有關標準整數型別的儲存大小和值範圍的詳細資訊 -

型別 儲存大小 值範圍
char 1位元組 -128 ~ 1270 ~ 255
unsigned char 1位元組 0 ~ 255
signed char 1位元組 -128 ~ 127
int 2或4位元組 -32,768 ~ 32,767-2,147,483,648 ~ 2,147,483,647
unsigned int 2或4位元組 0 ~ 65,5350 ~ 4,294,967,295
short 2位元組 -32,768 ~ 32,767
unsigned short 2位元組 0 ~ 65,535
long 4位元組 -2,147,483,648 ~ 2,147,483,647
unsigned long 4位元組 0 ~ 4,294,967,295

要在特定平台上獲取型別或變數的確切大小,可以使用sizeof運算子。 表示式sizeof(type)產生物件或型別的儲存大小(以位元組為單位)。 以下是在任何機器上獲取int型別大小的範例程式碼 -

#import <Foundation/Foundation.h>

int main() {
   NSLog(@"Storage size for int : %d \n", sizeof(int));
   return 0;
}

編譯並執行上述程式時,它在Linux上生成以下結果 -

2018-11-14 01:03:20.930 main[118460] Storage size for int : 4

2. 浮點型別

下表提供了有關標準浮點型別的儲存大小和值範圍及其精度的詳細資訊 -

型別 儲存大小 值範圍 精度
float 4位元組 1.2E-38 ~ 3.4E+38 6位小數
double 8位元組 2.3E-308 ~ 1.7E+308 15位小數
long double 10位元組 3.4E-4932 ~ 1.1E+4932 19位小數

標頭檔案float.h定義了一些巨集,可使用這些值以及有關程式中實數的二進位制表示的其他詳細資訊。 以下範例將列印浮點型別佔用的儲存空間及其範圍值 -

#import <Foundation/Foundation.h>

int main() {
   NSLog(@"Storage size for float : %d , maxval=%f \n", sizeof(float), FLT_MAX);
   return 0;
}

執行上面範例程式碼,得到以下結果:

2018-11-14 01:10:18.270 main[44023] Storage size for float : 4 , maxval=340282346638528859811704183484

註:有關 float.h 中定義的一些巨集如下所示 -

#define FLT_DIG         6                       /* # of decimal digits of precision */
#define FLT_EPSILON     1.192092896e-07F        /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_GUARD       0
#define FLT_MANT_DIG    24                      /* # of bits in mantissa */
#define FLT_MAX         3.402823466e+38F        /* max value */
#define FLT_MAX_10_EXP  38                      /* max decimal exponent */
#define FLT_MAX_EXP     128                     /* max binary exponent */
#define FLT_MIN         1.175494351e-38F        /* min positive value */
#define FLT_MIN_10_EXP  (-37)                   /* min decimal exponent */
#define FLT_MIN_EXP     (-125)                  /* min binary exponent */
#define FLT_NORMALIZE   0
#define FLT_RADIX       2                       /* exponent radix */
#define FLT_ROUNDS      1                       /* addition rounding: near */

3. void型別

void型別指定沒有可用的值。它用於以下兩種情況 -

編號 型別 描述
1 函式指定返回void Objective-C中有各種函式,它們不需要返回值,或者也可以說它們返回void。 沒有返回值的函式的返回型別為void。 例如,void exit(int status);
2 函式引數為void Objective-C中有各種函式不接受任何引數。沒有引數的函式可以指示接受void型別。 例如,int rand(void);

如果此時還無法理解void型別也沒有關係,可在後面的章節中看到更多介紹這個概念和範例。