Objective-C 2.0資料類型

來源:互聯網
上載者:User

本文有刪節: 

整形資料(int)

Objective-C中的int型可以儲存正的或者負的整數(即沒有小數位),整形(int)的位元依賴於目標機,在編譯期決定,一般是32位或者64位,這個取決於程式運行平台的CPU。值得注意的是,有時候作業系統也會起到作用,比如,CPU是64位,但是跑的作業系統是32位的,那麼int只能是32位的。

在32位系統上,無符號的整形(unsigned int)的範圍是0到4294967295。在64位系統上,這個範圍是0到18,446,744,073,709,551,615。對於有符號的整形,這兩個範圍分別為−2,147,483,648到+2,147,483,647和−9,223,372,036,854,775,808到+9,223,372,036,854,775,807。

所以,在寫Objective-C的程式的時候,你唯一可以假設的是,int型至少是32位。

譯者注:在iOS上,int是32位的。

預設的情況下,int是使用十進位的數來進行賦值的,如果你想使用八進位進行賦值,請在資料前面加入一個0。如下所示:

int myoctal = 024;

同樣的,0x開頭的標識16進位:

int myhex = 0xFFA2;

字元型(char)

Objective-C的char類型是用來儲存單個字元的,類似於英文字母,十進位的數字或者標點符合。下面是這樣的例子:

char myChar = 'w';char myChar = '2';char myChar = ':';

逸出字元 

除了上面這些普通的字元,有時候我們需要一些特殊的字元來標識特殊的含義,比如斷行符號換行,tab等,這些特殊的字元是以反斜線'\'開頭的,比如下面的這個就是標識斷行符號換行:

char newline = '\n';

任何以反斜線'\'開頭的都是逸出字元,那麼我們如何在字串中標識反斜線那?答案是兩個反斜線,如下所示:

char myslash = '\\'; Assign a backslash to a variable

下面是常用的逸出字元的列表:

\a - Sound alert
\b - Backspace
\f - Form feed
\n - New line
\r - Carriage return
\t - Horizontal tab
\v - Vertical tab
\\ - Backslash
\" - Double quote (used when placing a double quote into a string declaration)
\' - Single quote (used when placing a double quote into a string declaration)

浮點類型(float)

float在Objective-C中標識浮點類型的資料,即有小數部分的資料,例如456.12。一般情況下,這樣的資料被編譯器識別為另一種類型(Double,雙浮點類型),所以在賦值給float類型的時候,在資料後面加上一個f即可,就像下面這個樣子:

float myfloat = 123.432f

當我們表示一個很大的浮點數的時候,我們可以使用科學計數法,即後邊跟一個eX,X標識一個數字,比如67.7 x 104可以表示成下面的樣式: 

float myfloat = 67.7e4

雙精確度浮點類型(double)

Objective-C中的double 資料類型用來儲存比float類型更大的資料,double這個詞來自於它用來儲存的bit大小是float的兩倍,就像上一節提到的那樣,浮點數據是一個double類型,除非它跟一個f來標識是一個float類型。

id類型

你會在本書後面的章節看到,Objective-C是一個物件導向的語言,物件導向語言是用類的對象來重用代碼的,調用對象的方法被來實現邏輯功能,這些方法需要傳入參數和返回一些值,這些類型可能也是一個對象,id就是一個通用的用來指向一個對象。

譯者註:

在Objective-C中對象的標識符是一個單獨的資料類型:id。這種類型是一種通用的類型可以是各種對象不管是什麼類,可以是一個類的執行個體也可以是類對象本身。

1
id anObject;

對於Objective-C的物件導向結構,例如方法的傳回值id代替int作為預設的傳回值類型。(對於嚴格的C語言結構方法傳回值的預設類型仍然是int)。

關鍵字nil被定義為空白對象一個值為0的id。Id,nil和其他Objective-C基礎類型都是在標頭檔objc/objc.h中定義的。

id被定義為一個對象資料結構的指標:

12345
typedef struct objc_object {     Class isa; } *id;

每一個對象都有一個isa變數來表示它是哪個類的執行個體。由於類這個類型本身被定義為一個指標,因此isa變數經常被稱為“isa 指標”。

1
typedef struct objc_class *Class;

布爾類型(BOOL)

就像其他語言一樣,Objective-C也有一個用來儲存true和false的資料類型,布爾類型,這個類型使用關鍵詞_Bool或BOO來表示 ,下面的標記法都是合法的:

_Bool flag = 0;
BOOL secondflag = 1;

譯者註:和C++裡面的bool不一樣,BOOL只是一個signed char,YES=1,NO=0,只是一個約束,實際上你可以付給BOOL,YES和NO以外的值,在使用其他的數賦給一個布爾類型的時候,只取低八位,那麼就造成下面的問題,0x2300賦給一個布爾類型的時候,布爾類型的值是NO。大家一定要注意這個。

Objective-C中資料類型修飾符

目前位置,我們看到的都是Objective-C中的基礎資料型別 (Elementary Data Type)。在上面的資料類型的基礎上,Objective-C還有一些修飾符來對這些資料類型進行擴張。.

long型

long用來擴充一個資料類型的資料範圍,比如,下面的調用就是擴張了int型的資料:

long int mylargeint;

資料範圍被擴張到何種程度是由系統決定的,所以在很多系統上,long int和int其實一樣的。long同樣可以用來修飾double型:

long double mydouble;

譯者註:long可以在iOS中單獨使用,相當於long int,但是它的大小還是32位的,如果你希望使用64位的資料,請使用long long。
long long型

你可以認為long long是一個更長的long,因此,程式中的long long總是64位的,long long只用來修飾int, long long int和long long相同。

long long int mylargeint;

short型

目前我們看到的都是增加儲存空間的修飾符,那麼相反的也有減少儲存空間的修飾符,short,它只修飾int,short int是一個16位的整形,範圍從−32,768到+32,767:

short int myshort;

有符號和無符號signed / unsigned

預設的,一個整形是有符號的。換句話說,即編譯器會認為一個整形變數會儲存正數,也可能存的是負數。這樣就限制了正負數的範圍,比如,32位的整形的最大值在無符號的時候可以達到4,294,967,295。但是實際中,由於有負數的存在,所以它的範圍就是−2,147,483,648到+2,147,483,647。如果我們知道一個整形從來不會被用來儲存負數,那麼我們可以聲明它為無符號的,就是用unsigned修飾,它的範圍就是0到+4,294,967,295。聲明方式如下:

unsigned int myint;

上面的修飾符可以組合使用,比如聲明一個無符合的短整形:

unsigned short int myint = 10;

注意在unsigned, signed, short和long 修飾整形的時候,關鍵詞int可以省略,下面就是這樣的例子:

short myint;long myint;unsigned myint;signed myint;

小結

Objective-C在基礎資料型別 (Elementary Data Type)方面,是和其他語言一樣的。

譯者註:Objective-C是標準C的擴充,所以基本類型和C語言差不多,不過要注意布爾型,這個類型的定義是在C形成標準以前,所以就形成了現在的這個樣子。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.