如何將typedef signed long CFIndex
轉換爲typedef unsigned int NSUInteger
?將CFIndex轉換爲NSUInteger?
如果我使用CFIndex
作爲NSUInteger
類型的參數,那麼可以嗎?我沒有鑄造它,編譯器似乎並不介意。編譯器是否爲我做了轉換?
如何將typedef signed long CFIndex
轉換爲typedef unsigned int NSUInteger
?將CFIndex轉換爲NSUInteger?
如果我使用CFIndex
作爲NSUInteger
類型的參數,那麼可以嗎?我沒有鑄造它,編譯器似乎並不介意。編譯器是否爲我做了轉換?
是的,編譯器執行implicit type conversion。
在這裏你需要非常小心,因爲CFIndex是有符號的,NSUInteger是無符號的。有各種例程返回CFIndex -1。你需要在使用它作爲NSUInteger之前檢查它。
我該如何檢查? – ma11hew28 2012-04-15 12:10:18
if(index> = 0){NSUInteger uIndex =(NSUInteger)index; ...} else {error-or-return-or-whatever; } – 2012-04-15 15:59:30