main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d \n", d*y); } 结果 为什么是0???
4个回答
展开全部
c语言中有个强制类型转换。举个例子
int x;
x=1.2;
这个时候x是1
float x; x=5;
这个时候x是5.0
你这个题目实际是这样的
y=(x+3.8)/5.0
因为x是int型,所以x取1
y=(1+3.8)/5.0=4.8/5.0
因为y也是int型,所以y取0
int x;
x=1.2;
这个时候x是1
float x; x=5;
这个时候x是5.0
你这个题目实际是这样的
y=(x+3.8)/5.0
因为x是int型,所以x取1
y=(1+3.8)/5.0=4.8/5.0
因为y也是int型,所以y取0
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x=1.2; //x是整形,因此x=1
y=(x+3.8)/5.0;
=(1+3.8)/5.0
=4.8/5.0 //结果是0.96,但y是整形,因此y=0
=0
y=(x+3.8)/5.0;
=(1+3.8)/5.0
=4.8/5.0 //结果是0.96,但y是整形,因此y=0
=0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x是int型,x=1.2时会给截断,变成x=1,
这样x+3.8 / 5时是4.8/5 < 1,赋给y时就会给截断了,变成0
这样x+3.8 / 5时是4.8/5 < 1,赋给y时就会给截断了,变成0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询