我正在查看一个示例代码,其中涉及打印出整数数据类型的几个数字的平均值。代码是:
#include<stdio.h>
double getavg(int a[],int size){
int temp=0;
for(int i=0;i<size;i++){
temp+=a[i];
//checking intermediate temp
printf("%d ",temp);
}
return (temp/size);
}
int main(){
int arr[5]={1,2,3,4,5};
for(int i=0;i<5;i++)
printf("%d ",arr[i]);
printf("\n");
int avg=getavg(arr,5);
printf("\n");
printf("Average is %d",avg);
}
我尝试将 temp 的数据类型从整数更改为 double ,其余代码保持不变,我执行了程序,但现在代码输出平均值为 0,并且所有中间温度值都被评估为零。
#include<stdio.h>
double getavg(int a[],int size){
double temp=0;
for(int i=0;i<size;i++){
temp+=a[i];
//checking intermediate temp
printf("%d ",temp);
}
return (temp/size);
}
任何人都可以清除这个吗?
最佳答案
我认为它的计算结果为 double 但由于您使用的 printf
"%d"掩码而打印了一个 int。请改用“%f”。
关于c - 在 int 和 double 之间进行转换时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27436772/