求int类变量的平均值问题
int sum=56;
double avg;
avg=sum/4;对么?还是应该写成avg=(double)sum/4;先把sum强制类型装换?
2015-11-20
这是可以的,avg=sum/4;因为sum和4都是Int型,结合方向自右向左,所以先运行sum/4,得int型值14。再赋值给avg系统自动转换为double型,为14.000000。但如果sum的值不能被4整除的话,例如int sum=53,sum/4得到的int型值为13,avg值为13.000000,就错误了。要改变这种情况,可以用强制类型转换,如avg=(double)sum/4;也可以改变被除数的数据类型,如改为avg=sum/4.0,因为被除数为4.0为(double)float型,所以sum/4.0的值也变成(double)float 型,和avg的数据类型相一致,就不会出错。至于4.0系统判断为double还是float型,一般的系统都会根据语句灵活判断,一般不用考虑他的精度问题。
举报