#include<stdio.h> int main() { float a=10.0f; printf("%d\n",a); } 这个程序的输出结果为什么为0?

如题所述

#include<stdio.h> 
int main()

float a=10.0f;
printf("%d\n",a);//你的输出格式是%d
printf("%f\n",a);
printf("%d\n",(int)a);//想输出10的话要强制转换
}

 

追问

我想知道printf("%d\n",a);输出为什么是0?

追答

你把10.0在内存用IEEE标准存储,float按照%d输出,会去前4个字节,你按IEEE标准写出来10.0的存储形式,去前四个字节,就知道了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-31
C/C++ 规定 输出输入格式 要与 变量类型 匹配。float 不能 用 %d 格式输出。
不管你 a=10.0, a=20.0 用 %d 输出 就是 0。没什么 道理。

用联合体可以洞悉内存字节里的内容
union U{
float a;
int b;
char c[4];
} u;
main(){
u.a = 10.0; // 用 12.0 20.0 ....
printf("c= %x %x %x %x\n",u.c[0],u.c[1],u.c[2],u.c[3]);
printf("b= 0x%x\n",u.b);
printf("b= %d\n",u.b);
printf("a=%f\n",u.a);
printf("a=%d\n",u.a); // 打印 0本回答被提问者和网友采纳
第2个回答  2013-08-30
这跟具体的数字在内存中的表示方式有关.
相似回答