大家看看这段C++程序……

来源:百度知道 编辑:UC知道 时间:2024/05/07 01:01:38
#include<iostream.h>
void main()
{
float x=26,y=98;
float z;
int a;
z=y/x;
a=(int)(y/z);
cout<<z<<endl;
cout<<a<<endl;
}
像上面的强制制转换不行吗?
为什么不行?
不可以,在VC++6.0上a是25,改成int(z);才可以……

应该行吧,你放在编译器下边试下,实型比整型级别高啊

楼主说的是为什么a=25吧,其实这个题考查的是浮点型变量的有效数字问题,该程序中z是浮点型,所以z=98/26=3.769230(这个类型变量的有效数字是七位),
所以y/z=25.9.......,但因为强制类型转换为int过后给变量a,所以a的值为25(这个没有四舍五入的法则,小数部分全部不要)

可以啊,没什么不行啊

LZ是不是问为什么上面得25,而改为int(z)的话为什么得32?
两种都正确撒.z不是得3.76923吗,执行这句int(z)时就为3了。