OC中有两种类型转换的方式:自动类型转换和强制类型转换
一、自动类型转换
将一个基本数据类型的值直接赋给另一个基本数据类型的变量自动转换有如下规则:
1.可以直接将整数类型转换成浮点型变量,不会有太大的变化
2.浮点类型赋值给整型,数值的小数会直接舍弃
3.把取值范围大的变量赋值给范围小的变量时,可能发生溢出
//整型可以直接为浮点型赋值
int a =10;
float f = a;
//输出: 10.000000
NSLog(@"%f",f);
//浮点型为整型赋值,舍弃小数后的
double d = 34.7823;
int i1 = d;
//输出:34
NSLog(@"%d",i1);
//取值范围大的给小的会丢失精度
int i2 = 35000;
short s = i2;
//输出:-30536
NSLog(@"%d",s);
二、强制类型转换
强制类型转换的运算符是()
int a = 10;
int b = 3;
//a和b都是int型,结果也是int型
float f1 = a/b;
float f2 = (float)a/b;
//结果:f1=3.000000,f2=3.333333
NSLog(@"f1=%f,f2=%f",f1,f2);
三、表达式类型自动提升
当一个算术表达式中含有多种基本类型时,整个算术表达式的的数据类型将发生自动提升。
整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的等级。
提升等级排列:
short -> int -> long -> long long -> float -> double ->long double