打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[Objective-C语言教程]类型转换(20)

类型转换是一种将变量从一种数据类型转换为另一种数据类型的方法。 例如,如果要将long值存储到简单整数(int)中,则可以将long类型转换设置为int。使用强制转换运算符将值从一种类型转换为另一种类型,如下所示 -

(type_name) expression

在Objective-C中,通常使用CGFloat进行浮点运算,它是在32位情况下从基本类型的float派生的,在64位情况下是double类型。参考以下示例,使用转换运算符将一个整数变量除以另一个整数变量,结果为浮点数 -

 1 #import <Foundation/Foundation.h> 2  3 int main() { 4    int sum = 17, count = 5; 5    CGFloat mean; 6  7    mean = (CGFloat) sum / count; 8    NSLog(@"Value of mean : %f\n", mean ); 9 10    return 0;11 }

执行上面示例代码,得到以下结果:

2018-11-15 09:25:04.889 main[28822] Value of mean : 3.400000

这里应该注意,强制转换操作符优先于除法,因此sum的值首先转换为double类型,最后除以count,得到double类型的值。

类型转换可以是隐式的,由编译器自动执行,也可以通过使用转换运算符显式指定。每当需要类型转换时,使用强制转换运算符是一种很好的编程习惯。

整型提升

整数提升是将整数类型“小于” intunsigned int的值转换为intunsigned int的过程。 考虑在int中添加字符的示例 -

 1 #import <Foundation/Foundation.h> 2  3 int main() { 4    int  i = 17; 5    char c = 'c';  /* ascii value is 99 */ 6    int sum; 7  8    sum = i   c; 9    NSLog(@"Value of sum : %d\n", sum );10 11    return 0;12 }

当执行上面示例代码时,得到以下结果:

2018-11-15 09:28:10.138 main[110351] Value of sum : 116

这里,sum的值将变为116,因为编译器进行整数提升,并在执行加法运算之前将字符'c'的值转换为ascii值。

通用的算术转换

隐式执行通常的算术转换以将它们的值转换为通用类型。编译器首先执行整数提升,如果操作数仍然具有不同的类型,则它们将转换为在以下层次结构中显示最高的类型 -

通常的算术转换不是为赋值运算符执行,也不是为逻辑运算符&&||执行。下面看一个例子来理解这个概念 -

 1 #import <Foundation/Foundation.h> 2  3 int main() { 4    int  i = 17; 5    char c = 'c';  /* ascii value is 99 */ 6    CGFloat sum; 7  8    sum = i   c; 9    NSLog(@"Value of sum : %f\n", sum );10    return 0;11 }

执行上面示例代码,得到以下结果:

2018-11-15 09:28:10.138 main[110351] Value of sum : 116

在这里,很容易理解第一个c字符被转换为整数,但是因为最终值是float,所以通常的算术转换适用,编译器将ic转换为float并相加,所以最终产生的是float类型。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
算数运算符1
解读c的类型名
2.声明及赋值语句
数据结构课设之大整数四则运算
江苏省计算机等级考试C语言第一至三章考点
【Excel应用】公式中一些常见问题的解决
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服