初学C语言,帮我看看这个输出结果为什么是0?

 我来答
嘿小盒子

2021-10-28 · 超过21用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:4.1万
展开全部
1、因为你刚开始定义a,b是int类型的,整形的。
2、所以在a进行计算的时候会将12+12.4这个算式(a=12+12.4)计算成24,计算机自动将a语句的结构保存成整数型。
3、在你将b的值赋值为浮点型的a(b=(float)a;)时,结果其实应该是24.00。
4、但是由于你并未给b改变类型,所以他还是一个整形,在你结尾时引用lf浮点型的输出方式进行输出时,计算机识别不出来,所以结果为零。
希望可以帮到你,如果还有什么问题可以在下边留言。
镇远山神侍
2021-10-27 · 超过13用户采纳过TA的回答
知道答主
回答量:50
采纳率:42%
帮助的人:10.1万
展开全部
你好
这个是跟计算机体系结构有关的:
C语言中,printf函数不会进行任何类型转换,只是按照你给的格式从内存读取值。

在计算机中,printf函数去访问读取内存数据时,访问读取浮点数和访问读取整数的寄存器是不一样的。
你给的格式是去访问读取浮点数进行打印,却给了整形变量,所以无法访问读取到变量的值。
如果你将变量b强制转换为浮点型变量,输出是会没问题的。

这是我之前听大神说的,具体的细节我也不清楚,给你作个参考。
百度上应该有很多这个资料,你可以查证一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
说学逗化石bv
2021-10-27 · TA获得超过757个赞
知道小有建树答主
回答量:1793
采纳率:58%
帮助的人:262万
展开全部
没有报错吗?这是显式转换和隐式转换和问题,不知道你强制转换能不能转换成功,一般写代码的时候都不用强制转换,容易出问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创亿百家

2021-12-03 · 超过41用户采纳过TA的回答
知道答主
回答量:1341
采纳率:30%
帮助的人:24.3万
展开全部
到a的时候就转为整型了,148.8直接转为148然后转型为float是148.0最后结果可能就是这个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杯具——悲剧69779c
2021-10-27 · TA获得超过1352个赞
知道大有可为答主
回答量:3003
采纳率:64%
帮助的人:515万
展开全部
因为int类型的a 不能等于24.4
追问
将a强制转换也不行吗?
追答
那你得先转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式