float精度问题为什么咧?
为何例一中编译器不会提示精度转换,而例二中却会?[VC编译器/test.cpp]
例一:
void main()
{
int i=9;
printf("%f",i);
}
例二:
/*一个小问题,为什么在查错时编译器说“ warning C4244: '=' : conversion from 'double' to 'float', possible loss of data”?*/
/*我这里最高精度就float,怎么会??*/
#include <stdio.h>
#define N 10
struct student
{
char num[6];
char name[8];
int score[4];
float avr;
}stu[N];
void main()
{
int i,j,max,maxi,sum;
float average;
for(i=0;i<N;i++)
{
printf("\nInput scorees of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num );
printf("name:");
scanf("%s",stu[i].name );
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
average=0;
max=0;
maxi=0;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;
average+=stu[i].avr;
if(sum>max)
{
max=sum;
maxi=i;
}
}
average/=N;
printf("No.\tname\tscore1\tscore2\tscore3\taverage\n");
for(i=0;i<N;i++)
{
printf("%5s%10s",stu[i].num,stu[i].name );
for(j=0;j<3;j++)
printf("%9d",stu[i].score[j]);
printf("%8.2f\n",stu[i].score);
}
printf("average=%6.2f\n",average);
printf("The highest score is :%s,score total:%d.",stu[maxi].name,max);
}