Objective-C教學
Objective-C 教學首頁
Objective-C 語言概述
Objective-C 開發環境(安裝配置)
Objective-C語言程序結構
Objective-C 基本語法
Objective-C 數據類型
Objective-C 變量
Objective-C 常量
Objective-C 運算符
Objective-C 算術運算符
Objective-C 關係運算符
Objective-C 邏輯運算符
Objective-C 位運算符
Objective-C 賦值運算符
Objective-C 循環
Objective-C while循環
Objective-C for循環
Objective-C do...while循環
Objective-C 嵌套循環
Objective-C break語句
Objective-C continue語句
Objective-C 決策
Objective-C if語句
Objective-C if...else 語句
Objective-C 嵌套 if 語句
Objective-C switch語句
Objective-C 嵌套switch語句
Objective-C 函數
Objective-C 函數按值調用
Objective-C 函數引用調用
Objective-C 塊
Objective-C Numbers/數字
Objective-C Arrays/數組
Objective-C 多維數組
Objective-C 數組作爲函數參數傳遞
Objective-C 從函數返回數組
Objective-C 指針的數組
Objective-C 指針
Objective-C 指針運算
Objective-C 數組的指針
Objective-C 指向指針的指針
Objective-C 傳遞函數的指針
Objective-C 函數返回指針
Objective-C NSString/字符串
Objective-C struct/結構
Objective-C 預處理器
Objective-C typedef
Objective-C 類型轉換
Objective-C 日誌處理
Objective-C 錯誤處理
命令行參數
Objective-C 類&對象
Objective-C 繼承
Objective-C 多態性
Objective-C 數據封裝
Objective-C Categories/類別
Objective-C Posing/冒充
Objective-C 擴展
Objective-C Protocols/協議
Objective-C 動態綁定
Objective-C 複合對象
Obj-C Foundation/基礎框架
Objective-C 數據存儲
Objective C 文本和字符串
Objective-C 日期和時間
Objective-C 異常處理
Objective-C 文件處理
Objective-C URL加載系統
Objective-C 快速枚舉
Objective-C 內存管理

Objective-C 類型轉換

轉換類型是一種變量從一種數據類型轉換爲另一種數據類型。例如,如果想存儲一個long值轉換成一個簡單的整數,那麼可以鍵入轉換long 的int類型。可以將值從一個類型到另一個顯式地使用轉換運算符如下:

(type_name) expression

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

#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; }

上面的代碼編譯和執行時,它會產生以下結果:

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

應該指出的是,轉換運算符的優先級高於除法,這樣值的總和首先轉換爲double型最後它就會產生一個double值除以計數。

類型轉換可以是隱式的,這是由編譯器執行自動或通過使用轉換運算符,它可以顯式地指定。類型轉換時使用轉換運算符是必要的,它被認爲是良好的編程習慣。

整數推進提升

整型提升的過程,「小於」int或unsigned int整數類型的值轉換爲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; }

上面的代碼編譯和執行時,它會產生以下結果:

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

在這裏值的總和爲116,因爲編譯器正在做整型提升和轉換'c'的ASCII值,然後再執行實際的加法運算。

正常的算術轉換

通常的算術轉換隱式執行投下自己的值,在一個共同的類型。編譯器首先進行整型提升,如果操作數仍然有不同的類型,然後它們被轉換爲類型出現在以下層次最高:

Usual

通常的算術轉換不進行賦值運算符,也不是邏輯運算符&&和| |。讓我們看看下面的例子來理解這個概念:

#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; }

上面的代碼編譯和執行時,它會產生以下結果:

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

在這裏,它是簡單把第一個c被轉換成整數,但因爲終值是float,所以通常的算術轉換適用於I和C編譯器轉換成float,並添加他們產生了float結果。