C语言中整型变量用实型输出以及实型变量用整型输出结果会怎么样?

C语言中整型变量用实型输出以及实型变量用整型输出结果会怎么样?会不会直接输出0.000000和0我写了个:main(){inta=4;floatb=4.3;printf(... C语言中整型变量用实型输出以及实型变量用整型输出结果会怎么样?
会不会直接输出0.000000和0
我写了个:
main()
{
int a=4;
float b=4.3;
printf("int:%d\tfloat:%f\n",a,a);
printf("float:%f\tint:%d",b,b);
}
结果是:
int:4 float:819.200202
float:4.300000 int:0

能帮我分析一下吗?
展开
 我来答
BlueWanderer
2010-05-07 · TA获得超过9210个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2043万
展开全部
你这里首先一个严重问题就是不管什么环境下变长参数接受float和int的长度都不一样

你这里看上去是16位的,int是2字节 float是4字节

第一个printf 除格式需要6字节的参数你只提供了4字节,%f的高2字节是不缺定的值,所以打印出来的float也是不确定的(当然你每次执行这个程序可能会一样,但是改一下调用顺序就不行了)

第二个要求6个字节你给了8个字节,另外第二个printf没理由是0... 16位下应该是39322
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ritzberry
2010-05-07 · TA获得超过453个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:408万
展开全部
囧,,好吧
int 存放是二进制
但是浮点数的存放中有一部分二进制位代表的是2的几次方

float用科学计数法
1bit符号 + 8bits指数 + 23位有效数字

int
sigma(bit[i]*2^i)

存储格式不一样
所以一样的二进制数代表的数值不一样

ps

楼上,32位机明显int float一样长,
又是读谭浩强读出来的吧= =b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式