Objective C 2 0資料型別

2021-05-31 23:47:51 字數 4065 閱讀 1526

整形資料(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;

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在objective-c中標識浮點型別的資料,即有小數部分的資料,例如456.12。一般情況下,這樣的資料被編譯程式識別為另一種型別(double,雙浮點型別),所以在賦值給float型別的時候,在資料後面加上乙個f即可,就像下面這個樣子:

float myfloat = 123.432f

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

float myfloat = 67.7e4

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

你會在本書後面的章節看到,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被定義為乙個物件資料結構的指標:

123

45

typedef

struct objc_object

*id;

每乙個物件都有乙個isa變數來表示它是哪個類的例項。由於類這個型別本身被定義為乙個指標,因此isa變數經常被稱為「isa 指標」。

1

typedef

struct objc_class *

class;

_bool flag = 0;

bool secondflag = 1;

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

目前位置,我們看到的都是objective-c中的基本資料型別。在上面的資料型別的基礎上,objective-c還有一些修飾符來對這些資料型別進行擴張。.

long用來擴充套件乙個資料型別的資料範圍,比如,下面的呼叫就是擴張了int型的資料:

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

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

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

short int myshort;
預設的,乙個整形是有符號的。換句話說,即編譯器會認為乙個整形變數會儲存正數,也可能存的是負數。這樣就限制了正負數的範圍,比如,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;
short myint;

long myint;

unsigned myint;

signed myint;

objective-c在基本資料型別方面,是和其他語言一樣的。

譯者注:objective-c是標準c的擴充套件,所以基本型別和c語言差不多,不過要注意布林型,這個型別的定義是在c形成標準以前,所以就形成了現在的這個樣子。

Objective C 2 0資料型別

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

《Objective C 2 0程式設計》摘要

可以使用名為gcc的gnu objective c編譯器來編譯並鏈結這個程式,gcc命令一般的格式為 gcc framework foundation files o progname 該選項說明你要使用有關foundation框架的資訊 framework foundation objective...

《Objective C 2 0程式設計》摘要

可以使用名為gcc的gnu objective c編譯器來編譯並鏈結這個程式,gcc命令一般的格式為 gcc framework foundation files o progname 該選項說明你要使用有關foundation框架的資訊 framework foundation objective...