对含所有不同类型数据的表达式求值时,Objective-C编译器会遵循一些非常严格的规则,下面总结了表达式求值的过程中,不同类型的操作数发生转换的先后顺序:
1、如果其中一个操作数是long double类型的,另一操作数被转为long double型,则计算结果也是这种类型。
2、如果其中一个操作数是double型,另一操作数转换为double型,则计算结果也是这种类型。
3、如果其中一个操作数是float型,另一操作数转换为float型,则计算结果也是种类型。
4、如果其中一个操作数是Bool、char、short int、 bit field或枚举数据类型,则全部转换为int 型。
5、如果其中一个操作数是long int/long long int 型,另一操作数转换为long int/long long int型,计算结果也是种类型。
6、如果到达这一步,则可知两个操作数均为int型,计算结果也是这种类型。
f为float型,i为int型,l为long int型,s为short int 型
则:f*i+l/s 输出为float型
分析:f*i是float型;
l/s s是short int转换为int,后根据5 l/s转换为long int,在根据3转换为float,最后输出为float型。
oc之数据类型转换规则
时间: 2024-10-08 13:51:43