为什么这个代码打印出一个4
Why does this code print out a 4?
我不明白为什么这个程序使用浮点,但我得到了一个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声明为浮点值,这样就可以解决这个问题。
相关文章:
- 编写了一个C++代码来检查表达式是否具有平衡括号并且我的代码未运行.我已经卡了一天了
- 在Qt/C++中从一个代码构建两个略有不同的项目
- 编写一个代码,使年利率翻倍
- G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 我想制作一个代码,将C 中的单个数字值分开.例如:12345 = 1 2 3 4 5
- 我已经编写了一个代码来查找数组元素的反向,但它没有给出所需的输出
- 循环在此代码中仅迭代一次,而在另一个代码中正确迭代
- 我需要编写一个代码,从用户那里获取输入(句子)并停止在@处
- 我试图编写一个代码来查找一个单词是否是回文,但它不起作用。怎么了?
- 我不知道为什么只有一个代码在两个代码之间具有sigsegv(看起来相同)
- 编写一个代码,该代码在给定的链表中将删除具有奇数值的元素
- 查找哪个代码段比另一个代码段快
- 我正在编写一个代码,该代码从用户那里为公司中的五个项目输入数量
- 如果我制作一个代码,每个线程都会修改数组的完全不同的部分,则将保持缓存相干性
- 为什么下一个代码不编译
- 卡在测试'if':另一个代码的一部分
- 我有一个 c++ 代码,它在启动时崩溃,然后到达问题所在 main() 的执行
- C++语法谁呼吁一个代码块-简化工作
- 两个类相互包含,下一个代码有什么问题?