轉換類型是一種變量從一種數(shù)據(jù)類型轉換為另一種數(shù)據(jù)類型。例如,如果想存儲一個long值轉換成一個簡單的整數(shù),那么可以鍵入轉換long 的int類型。可以將值從一個類型到另一個顯式地使用轉換運算符如下:
(type_name) expression
Objective-C中,我們一般使用的CGFloat 做浮點運算,該類派生自基本類型。浮點值在32位和雙64位的情況下。請看下面的例子浮點運算要執(zhí)行一個整型變量除法由另一轉換運算符:
#import <Foundation/Foundation.h> int main() { int sum = 17, count = 5; CGFloat mean; mean = (CGFloat) sum / count; NSLog(@"Value of mean : %f ", mean ); return 0; }
上面的代碼編譯和執(zhí)行時,它會產(chǎn)生以下結果:
2013-09-11 01:35:40.047 demo[20634] Value of mean : 3.400000
應該指出的是,轉換運算符的優(yōu)先級高于除法,這樣值的總和首先轉換為double型最后它就會產(chǎn)生一個double值除以計數(shù)。
類型轉換可以是隱式的,這是由編譯器執(zhí)行自動或通過使用轉換運算符,它可以顯式地指定。類型轉換時使用轉換運算符是必要的,它被認為是良好的編程習慣。
整型提升的過程,“小于”int或unsigned int整數(shù)類型的值轉換為int或unsigned int。考慮加入一個字符在int 的一個例子:
#import <Foundation/Foundation.h> int main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; NSLog(@"Value of sum : %d ", sum ); return 0; }
上面的代碼編譯和執(zhí)行時,它會產(chǎn)生以下結果:
2013-09-11 01:38:28.492 demo[980] Value of sum : 116
在這里值的總和為116,因為編譯器正在做整型提升和轉換'c'的ASCII值,然后再執(zhí)行實際的加法運算。
通常的算術轉換隱式執(zhí)行投下自己的值,在一個共同的類型。編譯器首先進行整型提升,如果操作數(shù)仍然有不同的類型,然后它們被轉換為類型出現(xiàn)在以下層次最高:
通常的算術轉換不進行賦值運算符,也不是邏輯運算符&&和| |。讓我們看看下面的例子來理解這個概念:
#import <Foundation/Foundation.h> int main() { int i = 17; char c = 'c'; /* ascii value is 99 */ CGFloat sum; sum = i + c; NSLog(@"Value of sum : %f ", sum ); return 0; }
上面的代碼編譯和執(zhí)行時,它會產(chǎn)生以下結果:
2013-09-11 01:41:39.192 demo[15351] Value of sum : 116.000000
在這里,它是簡單把第一個c被轉換成整數(shù),但因為終值是float,所以通常的算術轉換適用于I和C編譯器轉換成float,并添加他們產(chǎn)生了float結果。