long和float区别void intfrac(float n,float &INT,float &FRAC){long temp=static_cast(n);INT=static_cast(temp);FRAC=n-INT;}这个函数谁能给我解释解释他的目的是输入3.14得到3和0.14为什么通过long和float之间的转换就能达

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/18 01:57:29

long和float区别void intfrac(float n,float &INT,float &FRAC){long temp=static_cast(n);INT=static_cast(temp);FRAC=n-INT;}这个函数谁能给我解释解释他的目的是输入3.14得到3和0.14为什么通过long和float之间的转换就能达
long和float区别
void intfrac(float n,float &INT,float &FRAC)
{
long temp=static_cast(n);
INT=static_cast(temp);
FRAC=n-INT;
}
这个函数谁能给我解释解释
他的目的是输入3.14得到3和0.14
为什么通过long和float之间的转换就能达到效果呢?
static_cast不是函数
他是一个语法

long和float区别void intfrac(float n,float &INT,float &FRAC){long temp=static_cast(n);INT=static_cast(temp);FRAC=n-INT;}这个函数谁能给我解释解释他的目的是输入3.14得到3和0.14为什么通过long和float之间的转换就能达
long就是长整型啊,可以理解为整数啦,位数比整型多一倍.float是浮点数啊.可以理解为小数啦.
首先这个:static_cast(表达式),表示强制类型转换,并且进行静态检查,就是在编译的时候检查啦.
函数参数里面的&表示引用,就是指这个变量是可以被赋值改变的.而n是传值的,不能改,只能用.
第一句类型转换,但不改变n本身的值,即temp=原来浮点数n的整数部分;把小数部分舍掉了.temp是long型的.
第二句把long型的temp附给函数参数里的INT;因为函数参数里INT是float的,所以再转一次附给INT;
第三局就是原来的那个n减去整数部分,得到小数部分啦.
这个函数写的真麻烦,其实直接
void intfrac(float n,long &INT,float &FRAC) //既然INT指整数,就用整型就好了
{
long temp=n; //隐式转换
INT=temp;
FRAC=n-INT;
}