double 与 int 问题

小道无心 2014-02-12 11:31:26
#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就能得到正确的结果?

3Q
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-02-13
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
小道无心 2014-02-12
  • 打赏
  • 举报
回复
自己发现了,scanf的问题。。。
twhold 2014-02-12
  • 打赏
  • 举报
回复
scanf("%d",&m); 执行这句时,输入一个整数,并把整数存到float类型变量m里面,但是由于float类型的变量和int类型的变量存储方式不一致..这里就导致了m出现了不可预见性的值!
derekrose 2014-02-12
  • 打赏
  • 举报
回复
debug看内存里内容
百曉生 2014-02-12
  • 打赏
  • 举报
回复
上面已经定义m为float了,怎么下面scanf中输入m还是%d啊
mujiok2003 2014-02-12
  • 打赏
  • 举报
回复
%d --> int
百曉生 2014-02-12
  • 打赏
  • 举报
回复
那就把帖子结了吧

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧