C++算术类型转换

来源:百度知道 编辑:UC知道 时间:2024/06/17 03:31:48
float f=3.5;
int n=6;
long k=21;
double ss=f*n+k/2
ss将会得到结果31,首先将f(float型)和n(int型)转换成double型数,算得21,然后计算k/2得整除运算结果10(long int型),再将long int型的数字10转换成double型数。21+10=31
float f=3.5 f转换成double型是多少?
int n=6,转换成double型是多少?
long int型数字10转换成double型多少?
这些都是如何计算出来的?

float f=3.5 f转换成double型是多少? 不变
int n=6,转换成double型是多少? 6.0
long int型数字10转换成double型多少? 10.0
这些都是如何计算出来的?
主要看表示数的范围,表示范围小的类型向表示范围大的类型转换一般不会发生问题,表示范围大的类型向表示范围小的类型转换可能会有溢出或截断的错误,
比如1000000000000000000000向int转换就会丢掉高位信息,3.5f向int转换就会丢掉小数部分。

首先你要了解float(单精度),和double(双精度)的数据类型,它们是有缺省值的。
(double)f依然是3.5
(double)n结果为6.0
long||int型的变量转换为double是 6.0
比如第一个强制类型转换
float f=3.5f;
double d;
d=(double)f;

4567-4.567=4562.433)