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

如题所述

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浮点型的输出方式进行输出时,计算机识别不出来,所以结果为零。
希望可以帮到你,如果还有什么问题可以在下边留言。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-27
你好
这个是跟计算机体系结构有关的:
C语言中,printf函数不会进行任何类型转换,只是按照你给的格式从内存读取值。

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

这是我之前听大神说的,具体的细节我也不清楚,给你作个参考。
百度上应该有很多这个资料,你可以查证一下。
第2个回答  2021-10-27
没有报错吗?这是显式转换和隐式转换和问题,不知道你强制转换能不能转换成功,一般写代码的时候都不用强制转换,容易出问题
第3个回答  2021-12-03
到a的时候就转为整型了,148.8直接转为148然后转型为float是148.0最后结果可能就是这个
第4个回答  2021-10-27
因为int类型的a 不能等于24.4追问

将a强制转换也不行吗?

追答

那你得先转换