C++中操作int变量的函数如何正确返回float类型值
问题根因
代码结果错误确实和类型转换逻辑有关:C++中两个int类型变量做除法时,会先执行整数除法,直接截断舍弃小数部分,仅保留整数结果,之后才会把这个整数转换为float类型返回,所以得不到带小数的正确平均值。
修复方法
只需要在做除法运算前,将其中一个操作数强制转换为浮点类型,就能触发浮点除法规则,修改average函数的返回语句即可:
// 写法1:C风格强制转换 return (float)sum / length; // 写法2:更规范的C++风格强制转换 return static_cast<float>(sum) / length;
其他可优化点
你代码中int scores[N];属于变长数组,这不是C标准语法,仅部分编译器做了扩展支持,可移植性差。建议替换为C标准容器:
- 引入头文件
#include <vector> - 将数组定义修改为
vector<int> scores(N);
内容的提问来源于stack exchange,提问作者goodvibesonly
相关产品推荐
相关产品推荐

