如何将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