差异范例数据间凭据下面干系的从左到右(从低到高)自动转换,
假如这些数据范例举办殽杂运算,运算中差异范例的数据先转化为同一范例,然后举办运算,转换从左到右自动转换,如表2-3所示。
表2-3 范例转换先后顺序表
操纵数1范例 | 操纵数2范例 | 转换后的范例 |
_Bool、char、short int、列举范例 | int | int |
_Bool、char、short int、列举范例、int | long int | long int |
_Bool、char、short int、列举范例、int、long int | long long | long long |
_Bool、char、short int、列举范例、int、long int、long long | float | float |
_Bool、char、short int、列举范例、int、long int、long long、float | double | double |
_Bool、char、short int、列举范例、int、long int、long long、float、double | long double | long double |
假如有下面的暗示式,个中,f是float范例,i为int范例,l为long int 范例,s为short int范例,功效是什么范例?
f * i + l /s
假如遵守范例转换是右到左环境,就需要强制范例转换了,强制范例转换语法形式上很简朴,就是在数据前面加上(方针范例),可是这种转换是存在风险的,有大概造成数据的丢失,需要审慎举办。譬喻:
long int l = 6666666666;
NSLog(@"l = %li",l);
int i = (int)l;
NSLog(@"i = %i",i);
强制转换有的时候嵌入在其它的表达式内里,它会与运行的优先级交叉在一起,环境就会变的越发巨大,假设有下面的几条语句:
int total = 3446;
int n = 6;
float average = total / n;
运行完成float的变量average功效是574.333,这个数据要比上面计较的准确,这是因为(float)total先把int范例的total变量转换成为float范例的total变量。
本文出自 “关东升” 博客,请务必保存此出处http://2009315319.blog.51cto.com/701759/716454