初学C语言,帮我看看这个输出结果为什么是0?
5个回答
展开全部
你好
这个是跟计算机体系结构有关的:
C语言中,printf函数不会进行任何类型转换,只是按照你给的格式从内存读取值。
在计算机中,printf函数去访问读取内存数据时,访问读取浮点数和访问读取整数的寄存器是不一样的。
你给的格式是去访问读取浮点数进行打印,却给了整形变量,所以无法访问读取到变量的值。
如果你将变量b强制转换为浮点型变量,输出是会没问题的。
这是我之前听大神说的,具体的细节我也不清楚,给你作个参考。
百度上应该有很多这个资料,你可以查证一下。
这个是跟计算机体系结构有关的:
C语言中,printf函数不会进行任何类型转换,只是按照你给的格式从内存读取值。
在计算机中,printf函数去访问读取内存数据时,访问读取浮点数和访问读取整数的寄存器是不一样的。
你给的格式是去访问读取浮点数进行打印,却给了整形变量,所以无法访问读取到变量的值。
如果你将变量b强制转换为浮点型变量,输出是会没问题的。
这是我之前听大神说的,具体的细节我也不清楚,给你作个参考。
百度上应该有很多这个资料,你可以查证一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有报错吗?这是显式转换和隐式转换和问题,不知道你强制转换能不能转换成功,一般写代码的时候都不用强制转换,容易出问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
到a的时候就转为整型了,148.8直接转为148然后转型为float是148.0最后结果可能就是这个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为int类型的a 不能等于24.4
追问
将a强制转换也不行吗?
追答
那你得先转换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询