Objective-C-2.0程序設(shè)計-第4章-數(shù)據(jù)類型和表達(dá)式.ppt_第1頁
Objective-C-2.0程序設(shè)計-第4章-數(shù)據(jù)類型和表達(dá)式.ppt_第2頁
Objective-C-2.0程序設(shè)計-第4章-數(shù)據(jù)類型和表達(dá)式.ppt_第3頁
Objective-C-2.0程序設(shè)計-第4章-數(shù)據(jù)類型和表達(dá)式.ppt_第4頁
Objective-C-2.0程序設(shè)計-第4章-數(shù)據(jù)類型和表達(dá)式.ppt_第5頁
免費預(yù)覽已結(jié)束,剩余50頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第4章 數(shù)據(jù)類型和表達(dá)式,第4章 數(shù)據(jù)類型和表達(dá)式,4.1 數(shù)據(jù)類型和常量,Objective-C提供4中基本數(shù)據(jù)類型:int、float、double和char。聲明為int類型的變量只能用于保存整型值,也就是沒有小數(shù)位的值。聲明為float類型的變量可存儲浮點數(shù)(即包含小數(shù)位的值)。double類型和float類型一樣,只不過前者的精度約是后者精度的兩倍而已。最后,char類型可存儲單個字符,例如字符a,數(shù)字字符6或者一個分號。 在Objective-C中,任何數(shù)字,單個字符或者字符串通常都稱為常量。例如,數(shù)字58表示一個常量整數(shù)值,字符串“Programming in Objective

2、-C is fun. n”表示一個常量字符串對象。完全由常量組成的表達(dá)式叫做常量表達(dá)式。因此,表達(dá)式 128+7-17 是一個常量表達(dá)式,因為該表達(dá)式的每一項都是一個常量值。 然而,如果將i聲明為整型變量,那么表達(dá)式 128+7-i 就不是一個常量表達(dá)式了。,4.1.1 int類型,在Objective-C中,整數(shù)常量由一個或多個數(shù)字的序列組成。序列前的負(fù)號表示該值是一個負(fù)數(shù)。值158、-10、0都是合法的整數(shù)常量。數(shù)字中間不允許長如空格,大于999的值不能用逗號表示(因此,值12,000是一個非法的整數(shù)常量,它必須寫成12000)。 Objective-C中,存在兩種特殊的格式,它們用一種非

3、十進(jìn)制的方式來表示整數(shù)常量。如果整型值的第一位是0,那么這個整數(shù)將用八進(jìn)制計數(shù)法來表示。在這種情況下,該值的其余位必須是合法的八進(jìn)制數(shù)字,那必須是0到7之間的數(shù)字。 如果整型常量以0和字母x(無論是大寫還是小寫字母)開頭,那么這個值都將用十六進(jìn)制計數(shù)法來表示。緊跟在字母x后的是十六進(jìn)制值的數(shù)字,它可由0到9之間的數(shù)字和a到f(或A到F)之間的字母組成。字母表示的數(shù)字分別為10到15.,4.1.1 int類型,每個值,不管是字符,整數(shù)還是浮點數(shù),都有與其對應(yīng)的值域。這個值域與存儲特定類型的值而分配的內(nèi)存量有關(guān)。一般來說,在語言中沒有規(guī)定這個量,它通常依賴所運行的計算機(jī),因此叫做設(shè)備或機(jī)器相關(guān)量。

4、例如,一個整數(shù)可在計算機(jī)上占用32位,或者可以使用64位存儲。 永遠(yuǎn)不要編寫假定數(shù)據(jù)類型大小的程序。然而,要保證為每種基本數(shù)據(jù)類型留出最小數(shù)量的內(nèi)存。例如,要保證整型值存儲在32位中。然而這一點不能保證。,4.1.2 float類型,聲明為float類型的變量可存儲包含小數(shù)位的值。要區(qū)分浮點常量,可通過查看其是否包含小數(shù)點??梢允÷孕?shù)點之前的數(shù)字,也可以省略之后的數(shù)字,然而,顯然不能全部省略。值3. 、125.8及-.0001都是合法的浮點常量。 浮點常量也能使用所謂的科學(xué)計數(shù)法。值1.7e4就是使用這種計數(shù)法來表示浮點值。位于字母e前的值稱為尾數(shù),而之后的值稱為指數(shù)。指數(shù)前面可以放置正號或

5、負(fù)號。指數(shù)表示將與尾數(shù)相乘的10的冪。用于分割尾數(shù)和指數(shù)的字母e,可大寫也可小寫。 要用科學(xué)計數(shù)法顯示值,應(yīng)該在NSLog格式字符串中指定格式字符%e。使用NSlog格式字符串%g允許NSlog確定使用常用的浮點計數(shù)法還是使用科學(xué)計數(shù)法來顯示浮點值。這一決定取決于指數(shù)的值:如果該值小于-4或大于5,采用%e(科學(xué)計數(shù)法)表示,否則采用%f(浮點計數(shù)法)。 十六進(jìn)制的浮點常量包含前導(dǎo)的0 x或0X,后面緊跟一個或多個十進(jìn)制或十六進(jìn)制數(shù)字,再后是p或P,最后是可以帶符號的二進(jìn)制指數(shù)。,4.1.3 double類型,類型double與類型float非常相似,而在float變量所提供的值域不能滿足要求

6、時,就要使用double變量。聲明為double類型的變量可存儲的位數(shù)大概是float變量所存儲的兩倍多。大多數(shù)計算機(jī)用64位來存儲double變量。 除非另有說明,否則Objective-C編譯器將所有的浮點常量均看做double值。要清楚地表示float常量,需要在數(shù)字的尾部添加一個f或F。 要顯示double值,可用格式符號%f、%e或%g,它們與顯示float值所用的格式符號是相同的。,4.1.4 char類型,char變量可存儲單個字符。將字符放入一對單引號中就能得到字符常量。因此a,;和0都是合法的字符常量。第一個常量表示字母a,第二個表示分號,第三個表示字符0,它并不等同于數(shù)字0

7、。不要把字符常量和C風(fēng)格的字符串混為一談,字符常量是放在單引號中的單個字符,而字符串則是放在雙引號中的任意個數(shù)的字符。如上一章提及,前面有字符并且放在雙引號中的字符串是NSString字符串對象。 字符常量n(即換行符)是一個合法的字符常量。出現(xiàn)這種情況的原因是反斜杠符號是Objective-C系統(tǒng)中的特殊符號,實際上并不把它看成一個字符。換句話說,Objective-C編譯器將字符n看做單個字符,盡管它實際上由兩個字符組成。其他的特殊字符由反斜杠字符開頭。,4.1.4 char類型,代碼清單4-1中,使用了基本的Objective-C數(shù)據(jù)類型。 代碼清單4-1 - #import int m

8、ain (int argc, char *argv) autoreleasepool int integerVar = 100; float floatingVar = 331.79; double doubleVar = 8.44e+11; char charVar = W; NSLog (”integerVar = %i”, integerVar); NSLog (”floatingVar = %f”, floatingVar); NSLog (”doubleVar = %e”, doubleVar); NSLog (”doubleVar = %g”, doubleVar); NSLog

9、(”charVar = %c”, charVar); return 0; ,4.1.4 char類型,代碼清單4-1 輸出: integerVar = 100 floatingVar = 331.790009 doubleVar = 8.440000e+11 doubleVar = 8.44e+11 charVar = W 在程序輸出的第二行,指派給floatingVar的值是331.79,實際顯示成了331.790009. 事實上,實際顯示的值是由使用的特定計算機(jī)系統(tǒng)決定的。出現(xiàn)這種不準(zhǔn)確的原因是:計算機(jī)內(nèi)部使用特殊方式表示數(shù)字。在計算機(jī)內(nèi)存中不能精確的表示一些浮點值。,4.1.5 限定詞:

10、long、long long,如果直接把限定詞long放在int之前,那么所聲明的整型變量在某些計算機(jī)上具有擴(kuò)展的值域。一個long int聲明的例子為: long int factorial; 這條語句將變量factorial聲明為long的整型變量。就像float和double變量一樣,long變量的具體進(jìn)度也是有具體計算機(jī)系統(tǒng)決定的。在許多系統(tǒng)上,int與long int具有相同的值域,而且任何一個都能存儲32位寬的整型值。 long int類型的常量值可通過在整型常量末尾添加字母L來形成。但數(shù)字和L之間不允許有空格。 long int numberOfPoints=131071100L

11、; 將變量numberOfPoints聲明為long int類型。,4.1.5 限定詞:long、long long,要用NSLog顯示long int的值,使用字母l作為修飾符并放在整型格式符號i,o和x之前。這意味著格式符號%li用十進(jìn)制格式顯示long int值,符號%lo用八進(jìn)制顯示值,而符號%lx用十六進(jìn)制格式顯示值。 可如下使用long long的整型數(shù)據(jù)類型: long long int maxAllowedStorage; 這條語句把將指定的變量聲明為具有特定擴(kuò)展進(jìn)度的變量,該擴(kuò)展精度保證變量至少具有64位的寬度。NSLog字符串不使用單個字母l,而使用兩個l來顯示long l

12、ong的整數(shù),例如“%lli”。 同樣可將long標(biāo)識符放在double聲明之前: long double US_deficit_2004; long double常量可寫成其尾部帶有字母l或的浮點常量。 要顯示long double的值,需要使用修飾符L。因此,%Lf用浮點計數(shù)法顯示long double的值,%Le用科學(xué)計數(shù)法顯示同樣的值,而%Lg將告訴NSlog在%Lf和%Le之間任選一個。,4.1.5 限定詞:long、long long,把限定詞short放在int聲明之前時,它告訴Objective-C編譯器要聲明的特定變量用來存儲相當(dāng)小的整數(shù)。之所以使用short變量,主要原因是

13、對節(jié)約內(nèi)存空間的考慮。 在某些計算機(jī)上,short int占用的內(nèi)存空間是常規(guī)int變量所占空間的一半。在任何情況下,分配給short int的空間數(shù)量不少于16位。 在Objective-C中,沒有其他方法可以顯示的編寫short int型常量。要顯示short int變量,可將字母h放在任何普通的整型轉(zhuǎn)換符號之前,如%hi,%ho或%hx。,4.1.5 限定詞:long、long long,最終限定詞可放在int變量之前,當(dāng)整數(shù)變量只用來存儲正數(shù)的情況下使用最終限定符: unsigned int counter; 向編譯器聲明:變量counter只用于保存正值。 通過將字母u(或U)放在常

14、量之后,可產(chǎn)生unsigned int常量。 0 x00ffU 編寫整型常量時,可將字母u(或)和(或L)組合起來使用: 20000UL 告訴編譯器將常量20000看做unsigned long。 如果整型常量之后不帶有字母u,U,l或L中的任何一個,而且它太大以至于不適合用普通大小的int表示,那么編譯器將把它看做unsigned int值。如果它太小以至于不適合用unsigned int表示,那么編譯器會把它看做long int。如果仍然不合適用long int表示,編譯器就會把它看做unsigned long int。 將變量聲明為long int,short int或unsigned

15、int時,關(guān)鍵字int可省略。 同樣可以講char變量聲明為unsigned。不過已超出本書的討論范圍。,4.1.6 id類型,id類型可以存儲任何類型的對象。從某種意義說,它是一般對象類型。例如,程序行 id number; 將number聲明為id類型的變量,可聲明方法使其具有id類型的返回值 -(id)newObject:(int)type; 這個程序行聲明了一個名為newObject的實例方法,它具有名為type的單個整型參數(shù)并有id類型的返回值。 應(yīng)該注意,對返回值和參數(shù)類型聲明來說,id是默認(rèn)的類型。因此,一下程序行 +allocInit; 聲明了一個返回id類型值的類方法。,4.

16、1.6 id類型,表4-1 基本數(shù)據(jù)類型,第4章 數(shù)據(jù)類型和表達(dá)式,4.2.1 運算符的優(yōu)先級,Objective-C中的每一個運算符都有與之相關(guān)的優(yōu)先級。該優(yōu)先級用于確定擁有多個運算符的表達(dá)式如何求值:優(yōu)先級較高的運算符首先求值。如果表達(dá)式包含優(yōu)先級相同的運算符,可按照從左到右或從右到左的方向來求值,具體按照哪個方向求值取決于運算符。 代碼清單4-2說明了加法,減法,乘法和除法運算,在程序中執(zhí)行的最后兩個運算引入了一個運算符比另一個運算符有更高的優(yōu)先級的概念。,4.2.1 運算符的優(yōu)先級,代碼清單4-2 - / Illustrate the use of various arithmetic

17、 operators #import int main (int argc, char *argv) autoreleasepool int a = 100; int b = 2; int c = 25; int d = 4; int result; result = a - b; /subtraction NSLog (”a - b = %i”, result); result = b * c; /multiplication NSLog (”b * c = %i”, result); result = a / c; /division NSLog (”a / c = %i”, result

18、); result = a + b * c; /precedence NSLog (”a + b * c = %i”, result); NSLog (”a * b + c * d = %i”, a * b + c * d); return 0; ,對NSLog指定表達(dá)式 作為參數(shù)時,無需將 該表達(dá)式的結(jié)果先指 派給一個變量。,4.2.1 運算符的優(yōu)先級,代碼清單4-2 輸出 a - b = 98 b * c = 50 a / c = 4 a + b * c = 150 a * b + c * d = 300 表達(dá)式: a+b*c 不會嘗試結(jié)果2550(102*25);相反,相應(yīng)的NSLog語

19、句顯示的結(jié)果為150.這是因為Objective-C與其他大多數(shù)程序設(shè)計語言一樣,對于表達(dá)式中多重運算或項的順序有自己的規(guī)則。因此,Objective-C認(rèn)為表達(dá)式a+b*c等價于a+(b*c)。 如果要改變表達(dá)式中項的計算順序,可使用圓括號。表達(dá)式 (a+b)*c 的值將是2550。圓括號也是可以嵌套的,在這種情況下,表達(dá)式的計算要從最里面的一對圓括號一次向外。只要確保結(jié)束括號與開始括號數(shù)目相等即可。,4.2.2 整數(shù)運算和一元負(fù)號運算符,代碼清單4-3引入了整數(shù)運算的概念。 代碼清單4-3 - / More arithmetic expressions #import int main (

20、int argc, char *argv) autoreleasepool int a = 25; int b = 2; int result; float c = 25.0; float d = 2.0; NSLog (”6 + a / 5 * b = %i”, 6 + a / 5 * b); NSLog (”a / b * b = %i”, a / b * b); NSLog (”c / d * d = %f”, c / d * d); NSLog (”-a = %i”, -a); return 0; ,6 + a / 5 * b = 16 a / b * b = 24 c / d * d

21、 = 25.000000 -a = -25,4.2.2 整數(shù)運算和一元負(fù)號運算符,迄今出現(xiàn)的每個程序中,每個運算符前后都有空格。這種做法不是必須的,僅僅是出于美觀上的考慮。一般來說,在允許單個空格的任何位置都可以插入額外的空格。如果能使程序更容易閱讀,敲擊空格的做做是值得的。 在代碼清單4-3中,第一個NSLog調(diào)用中的表達(dá)式鞏固了運算符優(yōu)先級的概念。 NSLog (”6 + a / 5 * b = %i”, 6 + a / 5 * b); 在第二條NSLog語句引入了一個新誤區(qū)。在輸出中顯示的24,而不是25.那是因為這個表達(dá)式采用整數(shù)運算來求值。 NSLog (”a / b * b = %

22、i”, a / b * b); 變量a和b的聲明都是int類型的。當(dāng)包含兩個整數(shù)表達(dá)式求值時,Objective-C系統(tǒng)都將使用整數(shù)運算來執(zhí)行這個操作。在這種情況下,數(shù)字的所有小數(shù)部分將丟失。因此,計算a除以b時,得到的中間結(jié)果是12而不是期望的12.5.這個中間結(jié)果乘以2就是最終結(jié)果24. 在第三條NSLog語句中,如果用浮點值來替代整數(shù)來執(zhí)行相同的運算就會獲得期望的結(jié)果。,4.2.2 整數(shù)運算和一元負(fù)號運算符,決定使用float變化還是int變量應(yīng)該基于變量的使用目的。如果無需任何小數(shù)位,可用整型變量。這將使程序更加高效的執(zhí)行。另一方面,如果需要精確到小數(shù)位,那么選擇應(yīng)該很清楚。唯一必須回

23、答的問題是使用float還是double。這取決為使用數(shù)據(jù)所需要的精度和他們的量級。 在最后一條NSLog語句中,使用了一元負(fù)號運算符對變量的值求反。這個一元運算符用于單個值的運算符,而二元運算符作用于兩個值。負(fù)號實際上扮演了一個雙重角色,作為二元運算符,它執(zhí)行兩個數(shù)相減的操作;作為一元運算符,它對一個值求反。 與其他運算符相比,一元負(fù)號運算符具有更高的優(yōu)先級。因此,表達(dá)式 c=-a*b 將執(zhí)行-a乘以b。,4.2.3 模運算符,模運算符由百分號(%)表示,它的功能是第一個值除以第二個值所得的余數(shù)。 代碼清單4-4 - / The modulus operator #import int ma

24、in (int argc, char *argv) autoreleasepool int a = 25, b = 5, c = 10, d = 7; NSLog (”a % b = %i”, a % b); NSLog (”a % c = %i”, a % c); NSLog (”a % d = %i”, a % d); NSLog (”a / d * d + a % d = %i”, a / d * d + a % d); return 0; ,a % b = 0 a % c = 5 a % d = 4 a / d * d + a % d = 25,4.2.3 模運算符,在前面,NSLog

25、使用百分號之后的字符來確定如何輸出下一個參數(shù)。然而,如果它后面緊跟另一個百分號,那么NSLog例程認(rèn)為你其實想顯示百分號,并在程序輸出的適當(dāng)位置插入一個百分號。 在第一條NSLog語句中,25除以5所得的余數(shù)是0,所以顯示的求模的結(jié)果是0。 在第二條NSLog語句中,25除以10所得的余數(shù)是5,所以顯示的求模的結(jié)果是5。 Objective-C使用整數(shù)運算來執(zhí)行來個整數(shù)間的任何運算。因此兩個整數(shù)相除所產(chǎn)生的任何余數(shù)將被完全丟棄。一般來說,表達(dá)式: a/b*b+a%b 的值始終與a相等(假定a和b的值都是整數(shù))。事實上,定義的模運算只用于處理整數(shù)。 就優(yōu)先級而言,模運算的優(yōu)先級與乘法和除法的優(yōu)先

26、級相等。,4.2.4 整型值和浮點值的相互轉(zhuǎn)換,代碼清單4-5 - / Basic conversions in Objective-C #import int main (int argc, char *argv) autoreleasepool float f1 = 123.125, f2; int i1, i2 = -150; i1 = f1; / floating to integer conversion NSLog (”%f assigned to an int produces %i”, f1, i1); f1 = i2; / integer to floating conver

27、sion NSLog (”%i assigned to a float produces %f”, i2, f1); f1 = i2 / 100; / integer divided by integer NSLog (”%i divided by 100 produces %f”, i2, f1); f2 = i2 / 100.0; / integer divided by a float NSLog (”%i divided by 100.0 produces %f”, i2, f2); f2 = (float) i2 / 100; / type cast operator NSLog (

28、”(float) %i divided by 100 produces %f”, i2, f2); return 0; ,4.2.4 整型值和浮點值的相互轉(zhuǎn)換,在Objective-C中,只要將浮點值賦值給整型變量,數(shù)字的小數(shù)部分都會被刪節(jié)。因此, i1 = f1; / floating to integer conversion NSLog (”%f assigned to an int produces %i”, f1, i1); 把f1賦值給i1時,數(shù)字123.125將被刪節(jié)。輸出結(jié)果為 123.125000 assigned to an int produces 123 只有整數(shù)部分被

29、儲存到i1中。 將整型變量指派給浮點變量的操作不會引起數(shù)字值的任何變化,該值僅由系統(tǒng)轉(zhuǎn)換并存儲到浮點變量中。 f1 = i2; / integer to floating conversion NSLog (”%i assigned to a float produces %f”, i2, f1); 把i1的值賦給f1時,輸出結(jié)果為: -150 assigned to a float produces -150.000000,4.2.4 整型值和浮點值的相互轉(zhuǎn)換,在程序代碼 f1 = i2 / 100; / integer divided by integer NSLog (”%i divid

30、ed by 100 produces %f”, i2, f1); 中,除法運算的兩個運算數(shù)都是整數(shù),因此除法運算的中間結(jié)果是整型,而將整型的值賦值給f1,即是將整型轉(zhuǎn)換為浮點值的運算。所以結(jié)果為: -150 divided by 100 produces -1.000000 在代碼清單4-5的最后兩個算法中,涉及到整數(shù)與浮點值的相除。在Objective-C中,任何處理兩個值的運算如果其中一個值是浮點變量或浮點常量,那么這一運算將作為浮點運算來處理。所以最后兩個算法的結(jié)果是相同的: -150 divided by 100.0 produces -1.500000 (float) -150 di

31、vided by 100 produces -1.500000,4.2.5 類型專函運算符,在聲明和定義方法是,將類型放入圓括號中來聲明返回值和參數(shù)的類型。在表達(dá)式中,將類型放在圓括號中,表示類型轉(zhuǎn)換。 代碼清單4-5中的最后一個運算: f2=(float)i2 / 100 中的放入圓括號中float就是一個類型轉(zhuǎn)換。 為了求表達(dá)式的值,類型轉(zhuǎn)換運算符將變量i2的值轉(zhuǎn)換為浮點數(shù)。該運算符不會影響變量i2的值;它是一個一元運算符。(float)i2的值是浮點值,但i2 的值還是整數(shù),類型轉(zhuǎn)換運算符并沒有改變變量本身的值,它相當(dāng)于一個中間變量。 類型轉(zhuǎn)換運算符比所有算數(shù)運算符的優(yōu)先級都高,但一元減

32、號和一元加號運算符除外。,4.2.5 類型專函運算符,表達(dá)式 (int)29.55 + (int)21.99 在Objective-C中等價于29+21。因為將浮點值轉(zhuǎn)換為整數(shù)的后果就是舍棄其中的浮點值。 表達(dá)式 (float)6 / (float)4 得到的結(jié)果為1.5,與表達(dá)式 (float)6 / 4 的結(jié)果相同。 類型轉(zhuǎn)換運算符通常用于將一般id類型的對象轉(zhuǎn)換為特定類的對象: id myNumber; Fraction *myFraction; . myFraction = (Fraction *) myNumber; 將id變量myNumber的值轉(zhuǎn)換成一個Fraction對象。,第

33、4章 數(shù)據(jù)類型和表達(dá)式,4.3 賦值運算符,Objective-C語言允許使用以下一般格式將算術(shù)運算符和賦值運算符合并到一起: op= 在這個格式中,op是任何算術(shù)運算符,包括+、-、*、/、%。此外,op還可以是任何用于移位和屏蔽操作的位運算符。 考慮下面語句: count+=10; 通常所說的“加號等號”運算符(+=),將運算符右側(cè)的表達(dá)式和左側(cè)的表達(dá)式相加,再將結(jié)果保存到運算符左邊的變量中。因此,上面的語句與下面的語句等價: count=count+10; 考慮下面語句: a /=b+c 無論等號右側(cè)出現(xiàn)什么樣的表達(dá)式,都將右側(cè)表達(dá)式的結(jié)果算出來后,再用a除。因為等號的優(yōu)先級比加號要低。

34、事實上,除逗號運算符外的運算符都比賦值運算符的優(yōu)先級高。因此,上面的語句等價于: a=a/(b+c),4.3 賦值運算符,使用賦值運算符的動機(jī)有3個:首先,程序語句更容易書寫,因為運算符左側(cè)的部分沒有必要在右側(cè)重寫。其次,結(jié)果表達(dá)式通常容易閱讀。再次,這些運算符的使用可使程序的運行速度更快,因為編譯器有時在計算表達(dá)式時能夠產(chǎn)生更少的代碼。,第4章 數(shù)據(jù)類型和表達(dá)式,4.4 計算器類,現(xiàn)在定義一個新類。創(chuàng)建一個Calculator類,它是一個簡單的四則運算計算器,可用來進(jìn)行加,減,乘,除運算。類似于常見的計算器,這種計算器必須能夠記錄累加的結(jié)果,獲知通常所說的累加器。因此,方法必須能夠執(zhí)行以下操

35、作:將累加器設(shè)置為特定值,將其清空(或設(shè)置為0),以及在完成時檢索它的值。 代碼清單4-6定義這個新類。,4.4 計算器類,代碼清單4-6 - / Implement a Calculator class #import interface Calculator: NSObject double accumulator; / accumulator methods -(void) setAccumulator: (double) value; -(void) clear; -(double) accumulator; / arithmetic methods -(void) add: (dou

36、ble) value; -(void) subtract: (double) value; -(void) multiply: (double) value; -(void) divide: (double) value; end,4.4 計算器類,implementation Calculator -(void) setAccumulator: (double) value accumulator = value; -(void) clear accumulator = 0; -(double) accumulator return accumulator; -(void) add: (do

37、uble) value accumulator += value; ,-(void) subtract: (double) value accumulator -= value; -(void) multiply: (double) value accumulator *= value; -(void) divide: (double) value accumulator /= value; end,4.4 計算機(jī)類,int main (int argc, char *argv) autoreleasepool Calculator *deskCalc; deskCalc = Calculat

38、or alloc init; deskCalc clear; deskCalc setAccumulator: 100.0; deskCalc add: 200.; deskCalc divide: 15.0; deskCalc subtract: 10.0; deskCalc multiply: 5; NSLog (”The result is %g”, deskCalc accumulator); return 0; ,輸出: The result is 50,4.4 計算機(jī)類,Calculator類只有一個實例變量,以及一個用于保存累加器值的double變量。方法定義的本事非常直觀。 注意調(diào)用multiple方法的消息: deskCalc multiply: 5; 該方法的參數(shù)是一個整數(shù),而它期望的參數(shù)卻是double類型。因為方法的數(shù)值參數(shù)會自動轉(zhuǎn)換以匹配期望的類型,所以不會出現(xiàn)任何問題。因此調(diào)用該函數(shù)時,整數(shù)5將自動轉(zhuǎn)換成雙精度浮點值。 即使自動轉(zhuǎn)換過程會自己進(jìn)行,然而在調(diào)用時提供正確的參數(shù)類型仍是一個較好的程序設(shè)計習(xí)慣。,第4章 數(shù)據(jù)類型和表達(dá)式,4.5 位運算符,Objective-C語言中有各種各樣的運算符可處理數(shù)字中的特定位。 表4-2 位運算符,表4-2中列出的所有運算符,除一次求反運算外,都是二元運算符。位運算符可以處理任何類型的整型值,但不能處理浮點

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論