C语言中浮点数以整数形式输出错误的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 18:31:17
#include "stdio.h"
void main()
{
float a=1.0;
printf("a=%d a=%f",a,a);

}
不管是a=1或者a=1.0或者a=1.0f
结果都是0 和 0.000000

请哪位高手帮我看下这个问题是怎么了?能帮我解释下!谢谢了!
你们不知道就别乱回答 回答的都跟我问的不一样 你门那个意思就是在解释%d %f格式输出的意思 废话 这个意思我当然知道
我问的是 a明明值为1 为什么输入结果为0? 我调试的时候 它的值都是正确的 就输入到控制台 值就变了 我在很多机器上都试过了 都是错的
帮我解释为什么a的值在输出到控制台会变!!!!!!!!!!!!!

%d要求的输入形式必须是整数。而此程序的输入形式是实数。就会产生这样的效果吧。
其实,如你所说,a的值是正确的,只是输出是错误的。这就像你给了一个人1块钱,你像让他给你买块糖。但是,你又不让他去糖果店,非让他去烟酒店。你说,他能给你买回来糖吗?至于他买回来的是什么,或者能不能买回来,只有鬼知道了。
#include "stdio.h"
void main()
{
float a=1.0;
printf("a=%d a=%f\n",a,a);
printf("a=%f,a=%d\n",a,a);

}
这样改一下,或许对你理解有点帮助吧。
最后一句,对于帮助你的人,你就以这样的态度来对待吗?人不是这样做的吧?

#include "stdio.h"
void main()
{
float a=1.0;
printf("a=%f a=%d",a,a);

}
内部机制,怎么安排的,还真是说不清楚!
但这样结果,至少要好一点!输出的语法对应错误了,它就默认那样了,有很多情况的!以后多注意了!

printf("a=%d a=%f",a,a); 这个语句决定了 你的结果:
a=%d表示a的输出结果为十进制整数,
a=%f表示a的输出结果为十进制浮点数!
其实你有个错误:
printf("a=%d a=%f",a,a); 应改为:printf("a=%d a=%f",&a,&a);

结果就应该是这样啊 不知道你想输出什么样?
你可以通过在%后面加x.y来控制输出样子
x代表一共有几位 y代表小数点后有几位
如%7.3f 即:一共7位小数点后有3位的浮点小数
不知道你是不是这个问题

由于内存空间长度不同,数发生截断,导致数值发生改变