第1个回答 2010-08-31
这个与数据在计算机中的存储有关系,同时也与printf函数有关系,修改为printf("%d,%f\n",(int)fVar,(double)iVar); 也是OK的,具体为什么会出错我也说不清楚。建议使用到类型转化的时候就强制转换一下,以免出问题。本回答被提问者采纳
第2个回答 2010-08-31
int iVar =5;
float fVar = 5.01;
printf("%f,%d\n",(double)iVar,fVar); // (double)iVar正确输出5.000000
printf("%d,%f\n",fVar,(double)iVar); // 这个跟printf函数和编译器有关吧,在VC里面前面一个转化出错了,后面一个是正确的结果。。。这样的时候要进行强制类型转化的,结果就看编译器怎么来定了。。。
printf("%f,%d\n",(double)iVar,5); // (double)iVar正确输出5.000000
printf("%d,%f\n",5,(double)iVar); // (double)iVar正确输出5.000000
第3个回答 2010-09-01
#include<stdio.h>
void main()
{int iVar =5;
float fVar = 5.01;
printf("%f,%d\n",(double)iVar,(int)fVar);
printf("%d,%f\n",(int)fVar,(double)iVar);
printf("%f,%d\n",(double)iVar,5);
printf("%d,%f\n",5,(double)iVar); }
至于为什么,软件本身的问题,没办法,就得这样输