C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?已上机运行过,最后结果为0,不是1.

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 19:05:06
C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?已上机运行过,最后结果为0,不是1.

C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?已上机运行过,最后结果为0,不是1.
C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?
已上机运行过,最后结果为0,不是1.

C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?已上机运行过,最后结果为0,不是1.
问题就出在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

表达式18/4*sqrt(4.0)/8值的数据类型是什么,求回答,这是C语言 C语言中表达式18/4*sqrt(4.0)/8最后的结果是0,为什么?已上机运行过,最后结果为0,不是1. C语言中,sqrt C语言中,表达式18/4*sqrt(4.0)/8的数据类型为什么?是INT,还是FLOAT,还是DOUBLE,是不是C语言中不可能有数据类型是FLOAT的式子,因为所有FLOAT运算时都转成了DOUBLE型的. C语言中,表达式18/4*sqrt(4.0)/8的数据类型是是DOUBLE,是因为所有FLOAT运算时都转成了DOUBLE,还是因为sqrt返回的是double是不是C语言中不可能有数据类型是FLOAT的式子,因为所有FLOAT运算时都转成了DOUBL C语言中sqrt()是什么意思 表达式18/4*sqrt(4.0)/8值的数据类型是 表达式18/4*sqrt(4.0)/8值的数据类型为( 表达式18/4*sqrt(4.0)/8值的数据类型,为什么? 表达式18/4*sqrt(4.0)/5的值是( ). 表达式18/4*sqrt(4.0)/8的值为多少 对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是 .代数式 C语言表达式A) exp(x*x/2)/sqrt(2*3.14159)B) 1.0/2.0*(a*x+(a+x)/(4*a)C) sqrt((pow(sin(x*3.14159/180),2.5))D) x*x-exp(5.0)答案是C 表达式 18/4 * sqrt(4.0)/4 的值的数据类型是 A.int B.float C.double D. 不确定理由 表达式 18/4*sqrt(4.0)/8 值的数据类型为( )A、int B、float C、double D、不确定 C语言 求表达式sqrt(9.0)+1/5的值3.000000 还是 3 呢 在C语言中sqrt代表什么意思 c语言中sqrt与sqr区别是什么? c语言 中sqrt 例如 x=sqrt(i+100) 在这里的意思 是干什么