我有以下代码:
int32 var1 = 81; double var2 = 2; if ((var1/10) < (var1 + var2) / 10) { some code to execute; }
除了我的理解之外,在划分它时会删除余数,所以if语句应该解析为"如果8 <8然后执行",所以不应该执行但是确实如此,这里有点难过.是因为我使用的是不同的变量类型吗?
我已经尝试分别打印(var1/10)和(var1 + var2)/ 10的结果,它们都输出8到控制台.
是因为我使用的是不同的变量类型吗?
对,那是正确的:
var1/10
是8
(整数除法)
(var1 + var2) / 10
是8.3
(浮点除法; var1
升级为浮点).
在评价中if
,8
被提升为浮点数.
8.0 < 8.3
是true
.所以if
语句执行.
它们都输出8到控制台.
不,他们没有.