读书人

关于%d %f的疑问望大神指点,该怎么处

发布时间: 2012-04-24 14:15:38 作者: rapoo

关于%d %f的疑问,望大神指点
/* 练习4_5:编程,令该程序中故意包含下列错误:
* 用%d显示一个浮点数
* 用%f显示一个整数
* 用%d显示一个字符
*/



#include<stdio.h>

int main()
{
int i=1;
float f=1.0000;
char c='c';
printf("%d\n",f); //程序显示为0

printf("%f\n",i);//程序显示为0.000000


printf("%d\n",c); //程序显示为99(ASCII码)
return 0;
}

以上为我的c程序源码及结果(注释中),%d及%f的结果我很是费解,难道不是%d取整应该为1,而%f取浮点1.000000

[解决办法]
那些格式符是不会帮你做转型的,直接用该类型的缺省值代替非该类型的数值。
[解决办法]
你需要理解float与double在内存中的存放形式! 它们跟int是不一样的,搞清它们的存放形式之后再理解就很随意了!加油。青年!
[解决办法]
上面的发错了

int
0000 0000
0000 0000
0000 0000
0000 0001

float 在内存中
0011 1111
1000 0000
0000 0000
0000 0000
[解决办法]

C/C++ code
    int i=1;    float f=1.0000f;    char c='c';    int *a = (int*)&f;    float *b = (float*)i;    printf("%d\n",*a); //程序显示为1065353216    printf("%f\n",b); //程序显示为0.000000    printf("%d\n",c); //程序显示为99(ASCII码)*/ 

读书人网 >C语言

热点推荐