关于C++中的类型转换

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:05:43
#include <iostream.h>
void main()
{
long l = 45;
float j = 1.0;
cout.precision(5);
cout <<l + j<<endl;
}
请问在语句 l + j 有类型转换吗?如果有的话,是long类型转换为float类型,还是float类型转换为long类型。C++中的类型转换规则是低级数据类型转换为高级数据类型吗?数据类型的高低仅仅是由数据类型变量所占的字节数决定的吗?
请C++高手回答。

数据类型转换规则是低级数据类型被转换成高级数据类型,这是为了防止精度损失。这是隐式的数据类型转换。
还有一种转换形式是强制数据类型转换,它可以将高级数据类型转换成低级数据类型,这种转换是一种不安全转换,转换后的数据精度将受到影响。
针对你上面的问题,应该是long型转换成型的float。long型属于整型,占4个字节,而float属于浮点型,是单精度浮点型,也占4个字节。

可以测试一下:
#include <iostream.h>
void main()
{
long l = 45;
float j;
j = 1.5;
cout.precision(5);
cout <<l + j<<endl;
}
这样输出结果就是46.5了,如果是将float转换成long,那么输出应该是46,如下的强制类型转换:
#include <iostream.h>
void main()
{
long l = 45;
float j;
j = 1.5;
cout.precision(5);
cout <<(long)(l + j)<<endl;
}

是的,一般是整型向浮点型或双精度型看齐,单精度向双精度看齐。

当然要类型转换了。C++中的类型转换规则是低级数据类型转换为高级数据类型

高级数据类型向低级数据类型转换 也就是 小数和整数相加得整数结果