为什么这个代码打印出一个4

Why does this code print out a 4?

本文关键字:一个 代码 打印 为什么      更新时间:2023-10-16

我不明白为什么这个程序使用浮点,但我得到了一个4输出。我以为浮点运算只输出小数。如果有任何帮助,我将不胜感激,我已经在这个代码中扮演主角一段时间了。

#include <iostream>
#include <stdarg.h>
using namespace std;
float avg( int Count, ... )
{
    va_list Numbers;
    va_start(Numbers, Count);
    int Sum = 0;
    for (int i = 0; i < Count; ++i)
        Sum += va_arg(Numbers, int);
    va_end(Numbers);
    return (Sum/Count);
}
int main()
{
    float Average = avg(10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
    cout << Average;
    return 0;
}

您的代码将45/10截断为4,因为45/10是整数除法。

如果要保留小数部分,请稍微更改表达式,使其成为浮点除法。

return (1.0*Sum/Count);

您的Sum是一个int;返回时,将Sum除以Count,后者将其截断为小数部分,然后将其转换为浮点值以返回。

为了得到正确的答案,你应该首先将其转换为float,然后除法并返回:例如

return ((float) Sum) / Count;

或者,您可以将Sum声明为浮点值,这样就可以解决这个问题。

相关文章: