回 帖 发 新 帖 刷新版面

主题:数据类型的问题

int i=3;
float r=2.0;
有一个表达式是i=r/i
r 不是float吗,'/'两边不应该是整型吗?

回复列表 (共2个回复)

沙发

"/"既可以是整数除,也可以是浮点数除,要看操作数的类型。
实际上,这里发生了两次隐式内置类型转换:
C++定义了算术类型之间的内置转换以尽可能防止精度损失。通常,如果表达式的操作数分别为整型和浮点型不一致,则整型的操作数被转换为浮点型。这里r是浮点型,i是整型,因此,做除法时,i首先被转换为浮点型,即3.0,然后进行浮点除,在赋值时,因为i是整型,除的结果再次被隐式转换为整型赋予i。

板凳

1楼正解

我来回复

您尚未登录,请登录后再回复。点此登录或注册