交答案要说类型

8 分钟

函数交回来的到底是整数还是小数,必须在函数名前提前声明清楚。类型说错了,小数部分会被无声地砍掉。

求平均分是最典型的坑:

double average(int sum, int cnt) {
    return (double)sum / cnt;   // 先转成小数再除
}

如果写成 int average(...),那 return 时结果会被截断成整数:3 个 90 分平均是 90 没问题,但 90、90、91 的平均本该是 ,却会交回 90。

更隐蔽的是整数除法。即使函数返回 double,只要写成 return sum / cnt;,右边两个都是 int,会先按整数除法算出 ,再转成小数,小数点后永远是 0。要在除之前就把一方转成 double

记住两条:

  • 要小数结果,返回类型写 double
  • 除号两边至少有一个是小数,否则整数除法先把精度丢了。

考试里凡是出现“平均、比例、百分比”,先想想会不会掉进整数除法。

小纸条

求平均分的函数,该交回什么类型?

登录 后可看答案

交答案要说类型 · 考级冲刺 · op599 课程