作业帮 > 综合 > 作业

C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/30 01:28:25
C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?
已上机运行过,最后结果为0,不是1.
C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?
问题就出在sqrt(4.0)上,这是个浮点数,结果是2.0.默认为double类型.
而double类型的存储方式是这样的,8字节,1个符号位,11个指数位,和52个精度位.
于是2.0的表示方法就是0(符号为正)000.01(指数为2^1)0000.0小数为0
如果你直接转换,而不用(int)转换的话,是直接截取末尾32位作为整数的,这样的话就都是0,所以在整数计算结果中就成了0.
如果你这样写:18/4*(int)sqrt(4.0)/8,结果就是你想要的了.
P.S.楼上说的不对,18/4==4