文章目錄
- 修飾符:long,long long,short,unsigned,and signed
資料類型和運算式
在這一節中我們將介紹一些objective-c中的基礎資料型別 (Elementary Data Type),和運算式的規則。
你可能會想到int類型,它是objective-c中的用來存放數位基礎資料型別 (Elementary Data Type),只能用來存放整形數值。
objective-c提供了其他三種基本的資料類型:浮點型(float),雙精確度(double),字元型(char)。同其他語言類似,浮點型用來存放帶小數位的數值,double型與float類似只是精確度更高。字元型(char)用來存放單個字元如: a 、 A 、 6、 等等。
在objective-c中,數字,單個字元,或者字串都被稱作a constant(常量)。如:數字 58代表 常量數值。字串“Programming in Objective-c is fun.\n”是一個字串的常量例子。所以這種由常量組成的運算式叫做常量運算式如:128+7-17
但是如果在這裡定義了一個int型的變數i,這個運算式就不是常量運算式了:128+7-i
下面以例子做講解:
int main(int argc,char *argv[]){ NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init] 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(@"charVar=%c",charVar); [pool drain]; return 0;}
輸出結果為
看輸出結果的第二行,注意331.79變成了331.79009關於這個問題。我又受教了一次,原文中寫的比較含糊,只是簡單的說了下浮點型大多都是近似值,並不能精確的表示數字,還以計算機中1除以3的結果為例子。在數學中1除以3的結果應該是0.3333333……後面無數個3,而由於電腦是有精度限制的因此只能取近似值。講的比較詳細的參見這篇博文深入淺出浮點數。
不過我基礎知識太差還是不明白為什麼得出的結果是331.790009 保留6為位小數,且最後一位總是9 。希望路過的高手不吝賜教。先謝謝了。
修飾符:long,long long,short,unsigned,and signed
如果long修飾符被加在一個int類型的變數前面,說明這個變數在電腦中的記憶體範圍增大了。舉個例子如: long int factorial;
在這裡定義了一個長整形的變數。對於float和doubles型的資料,他們的精確度取決於你的電腦系統。在多數系統中,一個整形(int)與一個長整形(long int)擁有相同的精度範圍,最多可以儲存32bits(位)。
一個常量的長整形表示方法為在數字後面緊接著加上一個字母(L)如: 13107100 的長整形標記法為 long int numberofPoints=13107100L
long long 整形的可以這樣表示,long long int maxAlloweStorage
long修飾符同樣被允許加在double型的前面,比如:long double US_deficit_2004
待續。