关于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呢?好奇怪啊。
请各位高手不吝赐教啊。 展开
void main()
{
int i,j;
i=3;
j=(float)i;
printf("%d,%f",i,j);
getchar();
}
这段为什么运行的结果是3,0.000000 而不是3,3.000000呢?好奇怪啊。
请各位高手不吝赐教啊。 展开
4个回答
展开全部
您在一开始声明的j是个int类型,在(float)i 强制转换时虽然返回的是float型,但是又把float赋给j,这里又隐式转换成了int型,抹去了小数店,等于最后j还是等于3,最后又把j以%f输出,就会出现这种结果了,开始时把j声明成float就没问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主你好:
#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();
}
呵呵,楼主若有不懂可找本人
#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();
}
呵呵,楼主若有不懂可找本人
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单
你定义了j为整形变量,而在复制时把i转为float赋值给j,但j还是只接受整形数据,所以赋值后j=3,。然而你在输出时,对j的格式用%f,系统判断没有定义为float的j变量,所以按照标准输出0.000000输出。
楼主应该明白!
你定义了j为整形变量,而在复制时把i转为float赋值给j,但j还是只接受整形数据,所以赋值后j=3,。然而你在输出时,对j的格式用%f,系统判断没有定义为float的j变量,所以按照标准输出0.000000输出。
楼主应该明白!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询