(int)((double)(5/2)+2.5)的值
答案:5 悬赏:50
解决时间 2021-01-11 01:45
- 提问者网友:皆是孤独
- 2021-01-10 15:37
(int)((double)(5/2)+2.5)的值
最佳答案
- 二级知识专家网友:夜风逐马
- 2021-01-10 16:10
获得5这个答案从哪里来的? 明确告诉你 这是错的 答案是4
(double)(5/2)----本来5/2应该值为整型,但是被强制转换为double型,所以结果为2.5
这个解释不正确
(double)(5/2)转换的是5/2的结果 而5 2均为整型,所以在5/2的时候,已经确定了结果是2
再double转换后为2.00000 加上后面的2.5 结果就是4.5000 再转换为int就是4
除非是
(int)((double)5/2+2.5) 这样结果才是5追问也就是说,不管5/2之前定义的是什么类型答案都是2,然后根据类型再转化吗?
那么如果是5.4/2呢?追答(5/2)是在括号里面的,在C语言中 括号大于天。有个括号罩着 那么不管括号外面有什么东东,括号里面的运算都不会受影响
所以不管何时
(5/2)都等同于(2)
类似的(5.4/2)都等同于(2.7) 因为不同类型计算,会自动升格为"高级类型"
在这里会先转换为float/double来计算(5.4的类型) 具体是float还是double 看编译器设置,默认一般为double追问再问一下哦,float和double类型下出来的(2.7)有什么区别啊?追答float 和double只是范围和精度不同
2.7这样简单又比较小的数字 两个类型没什么区别
(double)(5/2)----本来5/2应该值为整型,但是被强制转换为double型,所以结果为2.5
这个解释不正确
(double)(5/2)转换的是5/2的结果 而5 2均为整型,所以在5/2的时候,已经确定了结果是2
再double转换后为2.00000 加上后面的2.5 结果就是4.5000 再转换为int就是4
除非是
(int)((double)5/2+2.5) 这样结果才是5追问也就是说,不管5/2之前定义的是什么类型答案都是2,然后根据类型再转化吗?
那么如果是5.4/2呢?追答(5/2)是在括号里面的,在C语言中 括号大于天。有个括号罩着 那么不管括号外面有什么东东,括号里面的运算都不会受影响
所以不管何时
(5/2)都等同于(2)
类似的(5.4/2)都等同于(2.7) 因为不同类型计算,会自动升格为"高级类型"
在这里会先转换为float/double来计算(5.4的类型) 具体是float还是double 看编译器设置,默认一般为double追问再问一下哦,float和double类型下出来的(2.7)有什么区别啊?追答float 和double只是范围和精度不同
2.7这样简单又比较小的数字 两个类型没什么区别
全部回答
- 1楼网友:白昼之月
- 2021-01-10 20:19
((double)5)/2才是2.5
(double)(5/2)=(double)2
2+2.5=4.5
int 4.5 =4
答案是4
(double)(5/2)=(double)2
2+2.5=4.5
int 4.5 =4
答案是4
- 2楼网友:等灯
- 2021-01-10 19:17
先运算两个整数相除5/2,得到的是2,
再强制double成2.000,
再与2.5相加,得到4.50000,
最后强制成整形4
再强制double成2.000,
再与2.5相加,得到4.50000,
最后强制成整形4
- 3楼网友:胯下狙击手
- 2021-01-10 18:02
不确定在计算上试一下就是了,我的机器结果是4
描述里面第一步显然忽悠人的, (double)(5/2)将会是2.0
其实计算机更难预测结果的是某个double型x = 5.0,然后它和整数5是相等、还是大于小于的情况是不确定的,所以x转换成整数时,常见写成(int)(x+0.0000001) 或者在知道x是整数的情况下,写成(int)(x+0.5)
描述里面第一步显然忽悠人的, (double)(5/2)将会是2.0
其实计算机更难预测结果的是某个double型x = 5.0,然后它和整数5是相等、还是大于小于的情况是不确定的,所以x转换成整数时,常见写成(int)(x+0.0000001) 或者在知道x是整数的情况下,写成(int)(x+0.5)
- 4楼网友:罪歌
- 2021-01-10 16:53
答案是4~别乱说
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯