(float)10/2为什么是double类型
答案:6 悬赏:30 手机版
解决时间 2021-04-16 06:19
- 提问者网友:嘚啵嘚啵
- 2021-04-15 22:00
(float)10/2为什么是double类型
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-04-15 22:06
如果答案是double的话,我觉得啊,强制转换(float)10是float型,2是int型,float自动横向转换成double型,int垂直自动转换成double型,所以结果是double型
全部回答
- 1楼网友:空山清雨
- 2021-04-16 03:50
谁和你说是double的,结果还是float,我用如下程序验证过了:
#include
main()
{
printf("%d",sizeof((float)10/2));
getchar();
}
double类型数据是8字节,float类型数据是4字节,这个程序输出的是4。
补充回答:
是你理解有问题,首先,这是程序验证的,所以绝对是正确答案,即使书错了这个也不会错。
不过这里计算机在处理的时候的确是先同时把int和float转化成了double才进行运算的,只不过为了提高运算过程的精度又自动转化回来了,就算是float+float这样的情况,其实也是double+double的
#include
main()
{
printf("%d",sizeof((float)10/2));
getchar();
}
double类型数据是8字节,float类型数据是4字节,这个程序输出的是4。
补充回答:
是你理解有问题,首先,这是程序验证的,所以绝对是正确答案,即使书错了这个也不会错。
不过这里计算机在处理的时候的确是先同时把int和float转化成了double才进行运算的,只不过为了提高运算过程的精度又自动转化回来了,就算是float+float这样的情况,其实也是double+double的
- 2楼网友:患得患失的劫
- 2021-04-16 02:31
不对啊,(float)10/2,整个表达式是 float型的啊
- 3楼网友:野味小生
- 2021-04-16 00:53
为什么说是double型,我输出是float型,当然这也要看你输出的格式符,比如我的程序。
#include
int main(int argc, char *argv[])
{
printf("%f", (float)10/2);
return 0;
}
#include
int main(int argc, char *argv[])
{
printf("%f", (float)10/2);
return 0;
}
- 4楼网友:琴狂剑也妄
- 2021-04-16 00:20
怎么可能是double型,都指定是float型了。。。。
- 5楼网友:夜风逐马
- 2021-04-15 22:44
我与楼主的观点一致,是double型。在(float)10/2中,类型转换优先于除运算,因此表达式变为10.0/2,在这个表达式中,被除数除数类型不一致,都向double型化,因此结果是double型。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯