double 与 int 有关问题

double 与 int 问题
#include <stdio.h>
int main(int argc, char *argv[])
{
int i=0;
float m,s=0;
while(i<=4){
printf("enter your data\n");
scanf("%d",&m);
if(m>=0)
s=s+m;
i++;
};
 printf("sum of the data is %.2f",s);
return 0;
}


为什么s和m用float,结果就是0,定义成int就能得到正确的结果?

3Qdouble 与 int 有关问题
------解决方案--------------------
那就把帖子结了吧double 与 int 有关问题
------解决方案--------------------
%d --> int
------解决方案--------------------
上面已经定义m为float了,怎么下面scanf中输入m还是%d啊
------解决方案--------------------
debug看内存里内容
------解决方案--------------------
scanf("%d",&m);
执行这句时,输入一个整数,并把整数存到float类型变量m里面,但是由于float类型的变量和int类型的变量存储方式不一致..这里就导致了m出现了不可预见性的值!
------解决方案--------------------
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。