鍍金池/ 教程/ C/ Objective-C 類型轉(zhuǎn)換
Objective-C 多態(tài)性
Objective-C 預(yù)處理器
Objective-C for循環(huán)
Objective-C 開發(fā)環(huán)境(安裝配置)
Obj-C Foundation/基礎(chǔ)框架
Objective-C 指針運(yùn)算
Objective-C 循環(huán)
Objective-C 錯(cuò)誤處理
Objective-C while循環(huán)
Objective-C if語句
Objective-C do...while循環(huán)
Objective-C教程
Objective-C 嵌套switch語句
Objective-C 函數(shù)按值調(diào)用
Objective-C 常量
Objective-C 運(yùn)算符
Objective-C 數(shù)據(jù)類型
Objective-C 邏輯運(yùn)算符
Objective-C 數(shù)組作為函數(shù)參數(shù)傳遞
Objective-C struct/結(jié)構(gòu)
Objective-C 嵌套循環(huán)
Objective-C 函數(shù)引用調(diào)用
Objective-C 日志處理
Objective-C 數(shù)據(jù)存儲
Objective-C 教程首頁
Objective-C 擴(kuò)展
Objective-C 異常處理
Objective-C 類型轉(zhuǎn)換
Objective-C 嵌套 if 語句
Objective-C typedef
Objective-C 決策
Objective-C 指針的數(shù)組
Objective-C Protocols/協(xié)議
Objective-C 日期和時(shí)間
Objective-C 指針
Objective-C 內(nèi)存管理
命令行參數(shù)
Objective-C NSString/字符串
Objective-C 動態(tài)綁定
Objective-C 復(fù)合對象
Objective-C Arrays/數(shù)組
Objective-C 位運(yùn)算符
Objective-C 指向指針的指針
Objective-C 從函數(shù)返回?cái)?shù)組
Objective-C Posing/冒充
Objective-C Categories/類別
Objective-C 文件處理
Objective-C 賦值運(yùn)算符
Objective-C 函數(shù)返回指針
Objective-C if...else 語句
Objective-C switch語句
Objective-C URL加載系統(tǒng)
Objective-C 算術(shù)運(yùn)算符
Objective-C Numbers/數(shù)字
Objective-C語言程序結(jié)構(gòu)
Objective-C 快速枚舉
Objective-C 基本語法
Objective-C 類&對象
Objective-C 變量
Objective-C 關(guān)系運(yùn)算符
Objective-C 塊
Objective-C break語句
Objective-C continue語句
Objective-C 語言概述
Objective C 文本和字符串
Objective-C 函數(shù)
Objective-C 傳遞函數(shù)的指針
Objective-C 數(shù)組的指針
Objective-C 多維數(shù)組
Objective-C 繼承
Objective-C 數(shù)據(jù)封裝

Objective-C 類型轉(zhuǎn)換

轉(zhuǎn)換類型是一種變量從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。例如,如果想存儲一個(gè)long值轉(zhuǎn)換成一個(gè)簡單的整數(shù),那么可以鍵入轉(zhuǎn)換long 的int類型??梢詫⒅祻囊粋€(gè)類型到另一個(gè)顯式地使用轉(zhuǎn)換運(yùn)算符如下:

(type_name) expression

Objective-C中,我們一般使用的CGFloat 做浮點(diǎn)運(yùn)算,該類派生自基本類型。浮點(diǎn)值在32位和雙64位的情況下。請看下面的例子浮點(diǎn)運(yùn)算要執(zhí)行一個(gè)整型變量除法由另一轉(zhuǎn)換運(yùn)算符: 

#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í)行時(shí),它會產(chǎn)生以下結(jié)果:

2013-09-11 01:35:40.047 demo[20634] Value of mean : 3.400000

應(yīng)該指出的是,轉(zhuǎn)換運(yùn)算符的優(yōu)先級高于除法,這樣值的總和首先轉(zhuǎn)換為double型最后它就會產(chǎn)生一個(gè)double值除以計(jì)數(shù)。

類型轉(zhuǎn)換可以是隱式的,這是由編譯器執(zhí)行自動或通過使用轉(zhuǎn)換運(yùn)算符,它可以顯式地指定。類型轉(zhuǎn)換時(shí)使用轉(zhuǎn)換運(yùn)算符是必要的,它被認(rèn)為是良好的編程習(xí)慣。

整數(shù)推進(jìn)提升

整型提升的過程,“小于”int或unsigned int整數(shù)類型的值轉(zhuǎn)換為int或unsigned int??紤]加入一個(gè)字符在int 的一個(gè)例子:

#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í)行時(shí),它會產(chǎn)生以下結(jié)果:

2013-09-11 01:38:28.492 demo[980] Value of sum : 116

在這里值的總和為116,因?yàn)榫幾g器正在做整型提升和轉(zhuǎn)換'c'的ASCII值,然后再執(zhí)行實(shí)際的加法運(yùn)算。

正常的算術(shù)轉(zhuǎn)換

通常的算術(shù)轉(zhuǎn)換隱式執(zhí)行投下自己的值,在一個(gè)共同的類型。編譯器首先進(jìn)行整型提升,如果操作數(shù)仍然有不同的類型,然后它們被轉(zhuǎn)換為類型出現(xiàn)在以下層次最高:

Usual Arithmetic Conversion

通常的算術(shù)轉(zhuǎn)換不進(jìn)行賦值運(yùn)算符,也不是邏輯運(yùn)算符&&和| |。讓我們看看下面的例子來理解這個(gè)概念:

#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í)行時(shí),它會產(chǎn)生以下結(jié)果:

2013-09-11 01:41:39.192 demo[15351] Value of sum : 116.000000

在這里,它是簡單把第一個(gè)c被轉(zhuǎn)換成整數(shù),但因?yàn)榻K值是float,所以通常的算術(shù)轉(zhuǎn)換適用于I和C編譯器轉(zhuǎn)換成float,并添加他們產(chǎn)生了float結(jié)果。