首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

刚学C语言,有个小疑点想问一下

2012-04-07 
刚学C语言,有个小问题想问一下我用谭浩强的书书上有个地方说:“int型与float型运算,是先把int型和float型都

刚学C语言,有个小问题想问一下
我用谭浩强的书
书上有个地方说:“int型与float型运算,是先把int型和float型都转换到double型,然后进行运算,结果是double型”
 比如 int i=5;
  float f=1.2;
  那么i+f的结果将会是double型的。

为了验证这句话,我做了个实验,将i+f赋给一个float型的变量f2。。。。→f2=i+f;
如果那句话是对的,那么编译器将会有1个警告,因为将一个double型的赋给了一个float型,但事实上并没有警告,这是怎么回事?



[解决办法]

探讨

提升成double是因为double的运算速度远比float要快,所以一般编译器都会先将float提成double,算完了再转回去
没报警告是因为你在运算前就是float型的,只是编译器为了运算而转成了double,这些都是编译器偷偷完成的,如果你直接一个double型参加运算后赋给float一般都会报警告

[解决办法]
为啥float运算要比double慢呢?

因为float都要转化成double类型去运算。比起原本是double,这不是多了一个转换么?

为啥一定要转化呢?

因为很多机器不支持float类型运算,所以对于float的支持只是模拟,其实就是转换了数据类型去运算。

所以根据c运算规则,向大靠拢,int和float类型运算,本来都是应该转化成float的,但是float本身运算都是转换成double进行运算。所以。。。。

热点排行
Bad Request.