主题:数据类型的问题
ericwn
[专家分:0] 发布于 2008-08-03 23:07:00
int i=3;
float r=2.0;
有一个表达式是i=r/i
r 不是float吗,'/'两边不应该是整型吗?
回复列表 (共2个回复)
沙发
liuluning [专家分:3340] 发布于 2008-08-04 10:12:00
"/"既可以是整数除,也可以是浮点数除,要看操作数的类型。
实际上,这里发生了两次隐式内置类型转换:
C++定义了算术类型之间的内置转换以尽可能防止精度损失。通常,如果表达式的操作数分别为整型和浮点型不一致,则整型的操作数被转换为浮点型。这里r是浮点型,i是整型,因此,做除法时,i首先被转换为浮点型,即3.0,然后进行浮点除,在赋值时,因为i是整型,除的结果再次被隐式转换为整型赋予i。
板凳
s110 [专家分:1060] 发布于 2008-08-04 11:41:00
1楼正解
我来回复