有个错误 不理解,有谁能帮我解释一下

yclsdju 2014-07-18 03:38:49
# include<stdio.h>
main()
{
float area,pi=3.14159;
int r;
for(r=1;r<=10;r++)
{
area=pi*r*r;
if(area>100) break;
printf("[]r=%d],area=%f\n",r,area);
}
}
这个程序输出稍稍改动,把由%d改为%f输出结果就会错误
# include<stdio.h>
main()
{
float area,pi=3.14159;
int r;
for(r=1;r<=10;r++)
{
area=pi*r*r;
if(area>100) break;
printf("r=%f,area=%f\n",r,area);
}
}
...全文
348 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr丶Lennie 2014-07-29
  • 打赏
  • 举报
回复
格式化输出printf() 中int 类型对应了%d ,float 对应了%f,所以不能用%f 来输出%d 的变量
C_King_DX 2014-07-26
  • 打赏
  • 举报
回复
存储分配的字节都不一样,出栈会造成读取错误的。
勤奋的小游侠 2014-07-26
  • 打赏
  • 举报
回复
引用 3 楼 yclsdju 的回复:
float格式是谭浩强C语言上面的例子 我在学习时候发现输出不对,各位同仁可以自己复制两个程序,运行后看看结果
这个问题以前也有不少人问过,估计回复你的人都回答过不少了。你仔细看看别人的回复再自己思考一下。
Iflyinsky2013 2014-07-26
  • 打赏
  • 举报
回复


一切还是看图说话。。。。。。。
Zidane_2014 2014-07-21
  • 打赏
  • 举报
回复
楼主分别测试下这两段代码就能理解了:
#include<stdio.h>
int main()
{
	int a=5;
	printf("%f",a);
	return 0;
}
#include<stdio.h>
int main()
{
	float a=5;
	printf("%f",a);
	return 0;
}
a514289942 2014-07-21
  • 打赏
  • 举报
回复
类型不同,输出错误啊。
cyd54454 2014-07-21
  • 打赏
  • 举报
回复
按int类型存储,结果按float类型提取,肯定错了。浮点数和整型数存储格式完全两样的
707wk 2014-07-18
  • 打赏
  • 举报
回复
书上不是有吗?在讲输入输出的那章
qq_17858009 2014-07-18
  • 打赏
  • 举报
回复
前面定义的r类型和后面输出的r类型不一致
赵4老师 2014-07-18
  • 打赏
  • 举报
回复
Intel0011 2014-07-18
  • 打赏
  • 举报
回复
printf中,d对应int,f对应float和double d不能对应float,因为int和float的存储格式是不一样的,解码起来也不一样
yclsdju 2014-07-18
  • 打赏
  • 举报
回复
float格式是谭浩强C语言上面的例子 我在学习时候发现输出不对,各位同仁可以自己复制两个程序,运行后看看结果
赵4老师 2014-07-18
  • 打赏
  • 举报
回复
那么楼主希望下面这句输出啥呢? printf("%按照大熊猫的格式输出",CSDN的yclsdju);//
微型蚂蚁 2014-07-18
  • 打赏
  • 举报
回复
int和float的存储方式不同

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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