关于C++代码中平均值计算行的double/int输出类型疑问
关于C++中average计算结果类型的解答
嘿,我来帮你搞清楚这个疑问!咱们先拆解一下代码里的关键部分,一步步分析:
首先看参与运算的两个变量的类型:
total是 double 类型,一开始初始化为0.0count是 int 类型,初始值是1,循环结束后(如果没注释掉count--的话是4,没注释的话是5)
在C++的算术运算规则里,当不同类型的操作数进行计算时,会触发隐式类型转换:编译器会把精度更低的类型自动转换成精度更高的类型,以此避免精度损失。这里int类型的count会被转换成double类型,然后再和total做除法运算——也就是说,total/count本质上是 double / double 的运算,结果必然是double类型。
最后这个结果会赋值给同样是double类型的average变量,所以最终average的类型和运算结果都是double,不会是int类型。
另外提一句,你代码里注释掉了count--;,如果没注释的话,循环结束后count会从5变回4,这会影响除法的数值结果,但不管count是4还是5,它的类型转换规则都是一样的,运算结果始终是double。
内容的提问来源于stack exchange,提问作者Derick Larson
相关产品推荐
相关产品推荐

