首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

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

关于%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码)*/ 

热点排行