C语言浮点型转整型 5

voidmain(){floatftemp=0;scanf("%f",&ftemp);ftemp=ftemp*10;printf("%d",ftemp);getch();... void main()
{
float ftemp=0;
scanf("%f",&ftemp);
ftemp=ftemp*10;
printf("%d",ftemp);
getch();
}
这段代码为什么 无论输入什么,结果都是0。
我知道,要改为%f 。但是为什么输出都是0.
aaaqiutao 我把初值去掉,结果还是没变化。为什么呢?
对,我要问的就是 Purple__Sea说的。
展开
 我来答
kj1056564568
2010-07-10 · TA获得超过110个赞
知道答主
回答量:152
采纳率:50%
帮助的人:99.6万
展开全部
http://zhidao.baidu.com/question/23899742.html?fr=ala0
这个应该是数据结构的问题。
在K&RC下,float值用于表达式或用作参数前,会自动转换成double类型。而ANSI C一般不会自动把float转换成double。有些程序已假定其中的float参数会被转换成double,为了保护大量这样的程序,所有printf()函数的float参数还是被自动转换成double型。
只要你输入的数载float的范围内,那么转化为double型后,这个数据在内存中的二进制的低位部分(就是后面的部分)都是0。而这个数据是放进栈里的,所以按%d格式读取的时候,只读取后面的4个字节的数据,所以出现都为0,你试试在输入的时候多输几位小数,比如输入1.23456等,值就不为0了,为一个很大的数字,很可能为负数。
aaaqiutao
2010-07-12 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:50%
帮助的人:84.6万
展开全部
float ftemp;
不要后面的=0;因为一旦你分配给ftemp了值,它是无法通过键盘写入的方式赋给的,因为空间已经被占用。这不是a=b+c这样表达式的赋值。

晕,难道要我把源代码给你你直接复制?
那就给你吧!
#include <stdio.h>
void main()
{
float ftemp;
scanf("%f",&ftemp);
ftemp=ftemp*10;
printf("%f",ftemp);
getch();
}

随便输入一个数,然后回车,看结果
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皖韵南山B
2019-04-26 · TA获得超过3687个赞
知道大有可为答主
回答量:3070
采纳率:31%
帮助的人:207万
展开全部
按照你的程序,变量b没有使用,而且a的数据类型并没有改变,a=static_cast<float(a);
将一个浮点型变量赋值给一个整型变量仍然是一个整型变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
几二木火
2010-07-09 · TA获得超过611个赞
知道小有建树答主
回答量:639
采纳率:0%
帮助的人:485万
展开全部
printf("%d",ftemp);输出类型不对 应该是%f
Printf输出的时候不会自动转换类型。必须手动强制转换(int)ftemp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2010-07-09 · 超过22用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:41.7万
展开全部
你要问的应该是 为什么使用printf("%d",ftemp)后,无论输入什么数,总是输出0吧?
这个我也不知道,我把ftemp改为具体的浮点数,他不输出零啊,不知道他是怎么计算出来的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式