上一章Objective-C开发教程请查看:Objective-C typedef用法
类型转换是一种将变量从一种数据类型转换为另一种数据类型的方法。例如,如果你想将一个long存储为一个简单的整数,那么我们可以使用如下语法:
(type_name) expression
在Objective-C中,我们通常使用CGFloat来执行浮点运算,这是由基本类型float派生而来的,32位的情况下是32位,64位的情况下是double。考虑下面的示例,其中cast操作符导致将一个整型变量除以另一个整型变量作为浮点操作执行:
#import <Foundation/Foundation.h>
int main() {
int sum = 17, count = 5;
CGFloat mean;
mean = (CGFloat) sum / count;
NSLog(@"mean : %f", mean );
return 0;
}
这里应该注意的是,强制转换操作符优先于除法,所以sum的值首先转换为类型double,最后再除以count,得到一个double值。
类型转换可以是隐式的,由编译器自动执行,也可以通过使用cast操作符显式地指定。在需要类型转换时使用cast操作符被认为是很好的编程实践。
整数提升
整型提升是将整型数值“小于”整型或无符号整型的数值转换成整型或无符号整型的过程:
#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\n", sum );
return 0;
}
普通算术转换
普通的算术转换是隐式执行的,以将它们的值转换为公共类型。编译器首先执行整数提升,如果操作数仍然有不同的类型,那么它们将被转换为下面层次结构中最高的类型:
普通的算术转换不针对赋值运算符,也不针对逻辑运算符&&和||执行。让我们以下面的例子来了解这个概念:
#import <Foundation/Foundation.h>
int main() {
int i = 17;
char c = 'c';
CGFloat sum;
sum = i + c;
NSLog(@"sum : %f", sum );
return 0;
}
评论前必须登录!
注册