在c语言中3/2为什么等于0

我的程序是这样的#include<stdio.h>main(){printf("%f\n",3/2);}为什么结果会等于0:... 我的程序是这样的
#include<stdio.h>
main()
{
printf("%f\n", 3/2);
}
为什么结果会等于0:
展开
 我来答
L语言之父
推荐于2017-09-08 · TA获得超过3622个赞
知道小有建树答主
回答量:811
采纳率:0%
帮助的人:94.7万
展开全部
因为3默认的是int型的常量,所以3/2的输出结果为了与被除数一致就输出0(0.5进行int类型转换后就变成了0)
这里需要注意的就是C语言除法中,结果的数据类型是会转换成被除数的数据类型的。
比如:
int a = 4;
int b = 3;
float d = 5;
int c = a/b; // 变量c的结果就是1,本来4/3=1.333(为了与被除数a的类型一致,所以取了整数部分,舍去小数部分)
float e = d/a; // e的值就是1.25,因为d是float类型的
百度网友767420c
2011-10-25 · TA获得超过438个赞
知道小有建树答主
回答量:147
采纳率:87%
帮助的人:76.7万
展开全部
你后面的3还有2是整型,除下来的结果是整型,但是你的输出确实浮点型,编译器就出错了啊……需要强制转换;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cuidandan弘毅
2021-08-16
知道答主
回答量:1
采纳率:0%
帮助的人:460
展开全部
3默认的是int型的常量,所以3/2的输出结果为了与被除数一致就输出1,也就是说C中3/2运算结果是1,但是我们要的是 “%f” ,也就是要的小数,要把int 型的1转化成 float型,结果只会是0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2011-10-25 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38386
国家科技进步奖

向TA提问 私信TA
展开全部
因为编译时候没法知道其是什么类型的数,所以可以稍微改一下,在3和2后面加一个小数点
#include<stdio.h>
main()
{
printf("%f\n", 3./2.);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冥厣bqe88
2011-10-25
知道答主
回答量:56
采纳率:0%
帮助的人:28万
展开全部
3,2都是整数,你再用3.0/2.0试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式