关于C语言强制类型转换的问题

#include<stdio.h>voidmain(){inti,j;i=3;j=(float)i;printf("%d,%f",i,j);getchar();}这段为什... #include <stdio.h>
void main()
{
int i,j;
i=3;
j=(float)i;
printf("%d,%f",i,j);
getchar();
}
这段为什么运行的结果是3,0.000000 而不是3,3.000000呢?好奇怪啊。
请各位高手不吝赐教啊。
展开
 我来答
_baby小人_
2010-09-01 · TA获得超过253个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:251万
展开全部
因为你把j定义成一个int变量,执行完 j=(float)i;一句以后事实上i=3,j=3,但输出的时候却要求以%f输出,printf检查到j的类型为int不满足%f的格式,故而输出时未将j的值代入到"%d,%f"中,而是输出%f格式的默认值0.000000。相当于执行了printf("%d,%f",i);

你把int i,j;一句改成int i; float j;就能够输出 3,3.000000了
cc10k
2010-09-01 · TA获得超过545个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:232万
展开全部
您在一开始声明的j是个int类型,在(float)i 强制转换时虽然返回的是float型,但是又把float赋给j,这里又隐式转换成了int型,抹去了小数店,等于最后j还是等于3,最后又把j以%f输出,就会出现这种结果了,开始时把j声明成float就没问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
965560508
2010-09-01 · TA获得超过676个赞
知道小有建树答主
回答量:605
采纳率:0%
帮助的人:279万
展开全部
楼主你好:
#include <stdio.h>
void main()
{
int i,j;//I,J都被定义为整型
i=3;//整型I被赋值为3
j=(float)i;//I被强制转换为浮点型并赋值给J,C语言就长不就短原则,取浮点型,这时J为浮点型了
printf("%d,%f",i,j);//输出函数I为整型,所以是3,输出函数J为浮点型,所以是0。0000000
getchar();
}

呵呵,楼主若有不懂可找本人
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianjie890000
2010-09-01 · TA获得超过1739个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:472万
展开全部
很简单
你定义了j为整形变量,而在复制时把i转为float赋值给j,但j还是只接受整形数据,所以赋值后j=3,。然而你在输出时,对j的格式用%f,系统判断没有定义为float的j变量,所以按照标准输出0.000000输出。

楼主应该明白!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式