int m=5;
float k;
k=m*m/(m+1);
printf(''k=%f\n",k); k=4.000000
int m=5;
float k;
k=m*m/(m+1.0);
printf(''k=%f\n",k); k=4.166667
两者结果不同的原因是什么?
int m=5;
float k;
k=m*m/(m+1);
printf(''k=%f\n",k); k=4.000000
int m=5;
float k;
k=m*m/(m+1.0);
printf(''k=%f\n",k); k=4.166667
两者结果不同的原因是什么?
第一种是整除,舍去了小数部分。
m*m/(m+1);
m+1结果为6
25/6
返回结果是整数,然后赋值给float类型的变量。
也就导致变量k结果中的小数部分全是0了。
第二种表达式中,分母是浮点类型,所以不是整除,会保留小数部分。
k=m*m/(m+1.0);
m+1.0结果为6.0
25/6.0