当前位置: 代码迷 >> C语言 >> 求助! float类型问题!
  详细解决方案

求助! float类型问题!

热度:545   发布时间:2006-04-09 18:59:00.0
求助! float类型问题!

下面的程序为什么一个是0,另一个是20

#include<stdio.h>
#include<conio.h>

int main(void)
{
float i=20;
int j;

j=i;

printf("i=%d\n",i);
printf("j=%d\n",j);

getch();
return 0;
}

搜索更多相关的解决方案: float  类型  

----------------解决方案--------------------------------------------------------

你的输出格式符和定义的格式不匹配。


----------------解决方案--------------------------------------------------------
int 可以向float 转换

反过来好象就不可以了
----------------解决方案--------------------------------------------------------
我的意思是两个都应该是20啊
----------------解决方案--------------------------------------------------------

根据楼主的意思,我把程序改了一下
#include<stdio.h>
#include<conio.h>

int main(void)
{
float i=20;
int j;

j=i;

printf("i=%d\n",(int)i);/*强制转换成整型,否则将类型不匹配*/
printf("j=%d\n",j);

getch();
return 0;
}


----------------解决方案--------------------------------------------------------
都说的什么啊!我还不知道改可以,我的意思是我那样为什么不行,要改我早改了
    ~天下无敌~
----------------解决方案--------------------------------------------------------
一个实型数据一般在内存中占4个字节,它与整型数据的存储方式不同,是按照指数形式存储的。系统把一个实数分成小数部分和指数部分分别存放,这样一来存储的数据整数部分就为0了,你把输出格式定义为整型,当然只输出整数部分0了。
----------------解决方案--------------------------------------------------------
你写的是i=%d但定义为float,当输出的时候系统无法识别,就乱为0了
----------------解决方案--------------------------------------------------------
以下是引用huaixiaozi在2006-4-9 21:39:00的发言:
一个实型数据一般在内存中占4个字节,它与整型数据的存储方式不同,是按照指数形式存储的。系统把一个实数分成小数部分和指数部分分别存放,这样一来存储的数据整数部分就为0了,你把输出格式定义为整型,当然只输出整数部分0了。

高手,顶


----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<conio.h>

int main(void)
{
float i=20;
int j;

j=i;

printf("i=%f\n",i);
printf("j=%d\n",j);

getch();
return 0;
}


----------------解决方案--------------------------------------------------------
  相关解决方案